Cleanup: limit length of strings scanned by scanf.
[silc.git] / util / robodoc / Source / generator.c
index bbc5b666572f071a59d9390044319ce633a83188..2f9b9928755f71bb2b0396b6cf53047dff7085d0 100644 (file)
@@ -62,6 +62,12 @@ RB_Generate_Documentation (
 
       RB_Say ("generating documentation for \"%s\"\n", cur_header->name);
 
+#if 1
+     /* If MAIN_HEADER, do not create file */
+     if (cur_header->type == MAIN_HEADER)
+       continue;
+#endif
+
       if (output_mode == HTML)
         {
           sprintf(fname, "%s-%s.html", doc_base, cur_header->function_name);
@@ -167,7 +173,7 @@ RB_Generate_Doc_Start (
       else
        fprintf (dest_doc, "@database %s\n", name);
       fprintf (dest_doc, "@rem Source: %s\n", src_name);
-      fprintf (dest_doc, "@rem " COMMENT_ROBODOC);
+/*      fprintf (dest_doc, "@rem " COMMENT_ROBODOC); */
       fprintf (dest_doc, "@rem " COMMENT_COPYRIGHT);
       fprintf (dest_doc, "@node Main %s\n", name);
       fprintf (dest_doc, "@{jcenter}\n");
@@ -364,11 +370,22 @@ RB_Generate_Doc_Start (
 
     case LATEX:
       fprintf (dest_doc, "%% Document: %s\n", name);
-      fprintf (dest_doc, "%% Source: %s\n", src_name);
-      fprintf (dest_doc, "%% " COMMENT_ROBODOC);
+       fprintf (dest_doc, "%% Source: %s\n", src_name);
+/*      fprintf (dest_doc, "%% " COMMENT_ROBODOC);*/
       fprintf (dest_doc, "%% " COMMENT_COPYRIGHT);
       if (course_of_action & DO_SINGLEDOC) {
-       fprintf (dest_doc, "\\section{%s}\n", src_name);
+        if (!strchr(src_name, '_')) {
+         fprintf (dest_doc, "\\section{%s}\n", src_name);
+       } else {
+         char *tmp = calloc(strlen(src_name) + 2, sizeof(*tmp));
+         *strchr(src_name, '_') = '\\';
+         strncat(tmp, src_name, strcspn(src_name, "\\") + 1);
+         strncat(tmp, "_", 1); 
+         strncat(tmp, src_name + strcspn(src_name, "\\") + 1,
+                 strlen(src_name) - strcspn(src_name, "\\") - 1);
+         fprintf (dest_doc, "\\section{%s}\n", tmp);
+         free(tmp);
+        }
       } else {
        fprintf (dest_doc, "\\documentclass{article}\n");
         fprintf (dest_doc, "\\usepackage{makeidx}\n");
@@ -392,7 +409,7 @@ RB_Generate_Doc_Start (
        } else {
          fprintf (dest_doc, "\\title{API Reference}\n");
        }
-       fprintf (dest_doc, "\\author{%s}\n", COMMENT_ROBODOC);
+/*     fprintf (dest_doc, "\\author{%s}\n", COMMENT_ROBODOC); */
        fprintf (dest_doc, "\\makeindex\n");
        fprintf (dest_doc, "\\begin{document}\n");
        fprintf (dest_doc, "\\maketitle\n");
@@ -427,7 +444,6 @@ RB_Generate_Doc_Start (
                 "{\\title %s}"
                 "{\\comment\n"
                 " Source: %s\n"
-                " " COMMENT_ROBODOC
                 " " COMMENT_COPYRIGHT
                 "}"
                 "}", name, src_name);
@@ -1282,8 +1298,13 @@ RB_Generate_Item_Body (FILE * dest_doc, char *dest_name,
                    }
                  else if (file_name && strcmp (file_name, dest_name))
                    {
+#if 0
                      fprintf (dest_doc, "<A HREF=\"%s#%s\">%s</A>",
                               file_name, label_name, label_name);
+#endif
+                     fprintf (dest_doc, "<A HREF=\"%s-%s.html\">%s</A>",
+                              RB_FilePartStart(file_name), label_name, 
+                              label_name);
                    }
                  else
                    {
@@ -1382,7 +1403,7 @@ RB_HTML_Extra (FILE * dest_doc, int item_type, char *cur_char)
 
   if (strncmp ("http://", cur_char, strlen ("http://")) == 0)
     {
-      sscanf (cur_char, "%s", link);
+      sscanf (cur_char, "%1023s", link);
       RB_Say ("found link %s\n", link);
       res = (strlen (link) - 1);
       fprintf (dest_doc, "<A HREF=\"%s\">%s</A>", link, link);
@@ -1390,14 +1411,14 @@ RB_HTML_Extra (FILE * dest_doc, int item_type, char *cur_char)
   else if (strncmp ("href:", cur_char, strlen ("href:")) == 0)
     {
       /* handy in relative hyperlink paths, e.g. href:../../modulex/ */
-      sscanf ((cur_char + strlen ("href:")), "%s", link);
+      sscanf ((cur_char + strlen ("href:")), "%1023s", link);
       RB_Say ("found link %s\n", link);
       res = (strlen (link) + strlen ("href:") - 1);
       fprintf (dest_doc, "<A HREF=\"%s\">%s</A>", link, link);
     }
   else if (strncmp ("mailto:", cur_char, strlen ("mailto:")) == 0)
     {
-      sscanf ((cur_char + strlen ("mailto:")), "%s", link);
+      sscanf ((cur_char + strlen ("mailto:")), "%1023s", link);
       RB_Say ("found mail to %s\n", link);
       res = (strlen (link) + strlen ("mailto:") - 1);
       fprintf (dest_doc, "<A HREF=\"mailto:%s\">%s</A>", link, link);
@@ -1451,8 +1472,8 @@ RB_Generate_Index (FILE * dest, char *source)
          fprintf (dest, "<H1>Master Index File</H1>\n");
        }
        if (RB_Number_Of_Links (MAIN_HEADER, NULL))
-         RB_Generate_Index_Table (dest, MAIN_HEADER, "Project Modules");
-       RB_Generate_Index_Table (dest, NO_HEADER, "Source Files");
+         RB_Generate_Index_Table (dest, MAIN_HEADER, "Modules");
+//     RB_Generate_Index_Table (dest, NO_HEADER, "Source Files");
        if (RB_Number_Of_Links (CLASS_HEADER, NULL))
          RB_Generate_Index_Table (dest, CLASS_HEADER, "Classes");
        if (RB_Number_Of_Links (METHOD_HEADER, NULL))
@@ -1462,7 +1483,7 @@ RB_Generate_Index (FILE * dest, char *source)
        if (RB_Number_Of_Links (FUNCTION_HEADER, NULL))
          RB_Generate_Index_Table (dest, FUNCTION_HEADER, "Functions");
        if (RB_Number_Of_Links (VARIABLE_HEADER, NULL))
-         RB_Generate_Index_Table (dest, VARIABLE_HEADER, "Variables");
+         RB_Generate_Index_Table (dest, VARIABLE_HEADER, "Global Variables");
        if (RB_Number_Of_Links (CONSTANT_HEADER, NULL))
          RB_Generate_Index_Table (dest, CONSTANT_HEADER, "Constants");
        if (RB_Number_Of_Links (GENERIC_HEADER, NULL))
@@ -1552,8 +1573,9 @@ RB_Generate_Index_Table (FILE * dest, int type, char *title)
              if (RB_Number_Of_Links (NO_HEADER, cur_link->file_name) > 1)
                {
                  fprintf (dest,
-                          "<TD><A HREF=\"%s#%s\"><TT>%s</TT></A></TD>\n",
-                          cur_link->file_name, cur_link->label_name,
+                          "<TD><A HREF=\"%s-%s.html\"><TT>%s</TT></A></TD>\n",
+                          RB_FilePartStart(cur_link->file_name),
+                          cur_link->label_name,
                           cur_link->label_name);
                }
              else
@@ -1563,9 +1585,19 @@ RB_Generate_Index_Table (FILE * dest, int type, char *title)
            }
          else
            {
-             fprintf (dest, "<TD><A HREF=\"%s#%s\"><TT>%s</TT></A></TD>\n",
-                      cur_link->file_name, cur_link->label_name,
+             if (type == MAIN_HEADER)
+               {
+                 fprintf (dest, "<TD><A HREF=\"%s.html\"><TT>%s</TT></A></TD>\n",
+                      RB_FilePartStart(cur_link->file_name), 
                       cur_link->label_name);
+               }
+             else
+               {
+                 fprintf (dest, "<TD><A HREF=\"%s-%s.html\"><TT>%s</TT></A></TD>\n",
+                      RB_FilePartStart(cur_link->file_name), 
+                      cur_link->label_name,
+                      cur_link->label_name);
+               }
            };
          cur_column++;
          if (cur_column > number_of_columns)