/**********************************************************************
 * ti library's routine for adding a keyword
 *
 * $Author: brlewis $
 * $Source: /afs/net.mit.edu/project/net_dev/brlewis/src/lib/RCS/ti_kwadd.c,v $
 * $Header: /afs/net.mit.edu/project/net_dev/brlewis/src/lib/RCS/ti_kwadd.c,v 0.1 92/03/12 15:27:33 brlewis Exp $
 *
 * Copyright 1991 by the Massachusetts Institute of Technology.
 *
 * For copying and distribution information, please see the file
 * <mit-copyright.h>.
 **********************************************************************/

#include <mit-copyright.h>

#ifndef lint
static char rcsid_ti_kwadd_c[] = "$Header: /afs/net.mit.edu/project/net_dev/brlewis/src/lib/RCS/ti_kwadd.c,v 0.1 92/03/12 15:27:33 brlewis Exp $";
#endif /* lint */

#include <stdio.h>
#include <ti/ti.h>

/**********************************************************************
 * ti_kwadd(ti_node_H hnode, LPSTR kw)
 *
 * - adds kw to hnode's ti_topic;
 * - returns error code
 **********************************************************************/

/* jms 7/13/92 -- windows-izing completed, pending approval */

long
ti_kwadd(hnode, kw)
     ti_node_H hnode;
     LPSTR kw;
{
  register LPSTR ptr1, ptr2;
  static char newtopic[BUFSIZ];

  ti_node_LP lpnode;

  lpnode = (ti_node_LP)TI_DEREFERENCE(hnode);

  if (!ti_topic(lpnode) || !(*ti_topic(lpnode)))
    CLEANUP_AND_RETURN(ti_settopic(hnode, kw))

  /* copy keywords so far */
  for (ptr1=ti_topic(lpnode), ptr2=newtopic;
       *ptr1;
       ptr1++, ptr2++) *ptr2 = *ptr1;

  /* add comma separator */
  *(ptr2++) = ',';

  /* copy new keyword */
  for (ptr1=kw; *ptr1; ptr1++, ptr2++) *ptr2 = *ptr1;

  /* end string */
  *ptr2 = '\0';

  CLEANUP_AND_RETURN(ti_settopic(hnode, newtopic))

CLEANUP:
  TI_REMOVE_DEREFERENCE(hnode, lpnode);
  return (code);
}
