home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume8 / gnuplot1.10A / part07 / help / insert.c < prev    next >
C/C++ Source or Header  |  1989-09-09  |  1KB  |  64 lines

  1. /*
  2.  * Program    : help
  3.  * Module    : insert.c
  4.  * Programmer    : R. Stolfa
  5.  *
  6.  * Purpose :    To uniquely insert a basename and help topic to the
  7.  *        specified list
  8.  *
  9.  * Modification History:
  10.  *   07/13/88    Created
  11.  */
  12.  
  13. #include    "global.h"
  14.  
  15. insert (cmd, basename, subject, command)
  16. int    cmd;
  17. char    *basename,
  18.     *subject,
  19.     *command;
  20. {
  21.     struct    LIST    *new, *p;
  22.  
  23.     if ((strlen (basename) == 0) ||
  24.         (strlen (subject) == 0) ||
  25.         (cmd < 0) || (cmd >= 3))
  26.         /*
  27.          * Bad invocation of "insert()"
  28.          */
  29.         return;
  30.  
  31.     /*
  32.      * Build the basic LIST structure for the new
  33.      * entry
  34.      */
  35.     new = (struct LIST *)
  36.         malloc (sizeof (struct LIST));
  37.     strcpy (new->base, basename);
  38.     strcpy (new->topic, subject);
  39.     strcpy (new->cmd, command);
  40.  
  41.     /*
  42.      * Prepend the new element onto the correct list
  43.      */
  44.     p = _list[cmd];
  45.     new->prev = _list[cmd];
  46.  
  47.     /*
  48.      * Check for uniqueness
  49.      */
  50.     for (; p != NULL; p = p->prev) {
  51.         if (strcmp (new->base, p->base) == 0) {
  52.             free (new);
  53.             return;
  54.             /* NOT REACHED */
  55.         }
  56.     }
  57.  
  58.     /*
  59.      * If we get to here, we have a new item.  Fix the master
  60.      * pointer & go on.
  61.      */
  62.     _list[cmd] = new;
  63. }
  64.