/[global]/global/libutil/gtagsop.c
ViewVC logotype

Diff of /global/libutil/gtagsop.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.51 by h-iwamoto, Wed Nov 3 15:35:50 2004 UTC revision 1.52 by shigio, Sat Nov 6 09:25:16 2004 UTC
# Line 213  formatcheck(line, format) Line 213  formatcheck(line, format)
213          recover(&ptable);          recover(&ptable);
214  }  }
215  /*  /*
  * gtags_setinfo: set info string.  
  *  
  *      i)      info    info string  
  *  
  * Currently this method is used for postgres.  
  */  
 void  
 gtags_setinfo(info)  
         char *info;  
 {  
         dbop_setinfo(info);  
 }  
 /*  
216   * gtags_open: open global tag.   * gtags_open: open global tag.
217   *   *
218   *      i)      dbpath  dbpath directory   *      i)      dbpath  dbpath directory
# Line 236  gtags_setinfo(info) Line 223  gtags_setinfo(info)
223   *                      GTAGS_MODIFY: modify tag   *                      GTAGS_MODIFY: modify tag
224   *      i)      flags   GTAGS_COMPACT   *      i)      flags   GTAGS_COMPACT
225   *                      GTAGS_PATHINDEX   *                      GTAGS_PATHINDEX
  *                      GTAGS_POSTGRES  
226   *      r)              GTOP structure   *      r)              GTOP structure
227   *   *
228   * when error occurred, gtagopen doesn't return.   * when error occurred, gtagopen doesn't return.
# Line 277  gtags_open(dbpath, root, db, mode, flags Line 263  gtags_open(dbpath, root, db, mode, flags
263           * allow duplicate records.           * allow duplicate records.
264           */           */
265          dbopflags = DBOP_DUP;          dbopflags = DBOP_DUP;
         if (flags & GTAGS_POSTGRES)  
                 dbopflags |= DBOP_POSTGRES;  
266          gtop->dbop = dbop_open(makepath(dbpath, dbname(db), NULL), dbmode, 0644, dbopflags);          gtop->dbop = dbop_open(makepath(dbpath, dbname(db), NULL), dbmode, 0644, dbopflags);
267          if (gtop->dbop == NULL) {          if (gtop->dbop == NULL) {
268                  if (dbmode == 1)                  if (dbmode == 1)
269                          die("cannot make %s.", dbname(db));                          die("cannot make %s.", dbname(db));
270                  die("%s not found.", dbname(db));                  die("%s not found.", dbname(db));
271          }          }
         if (gtop->dbop->openflags & DBOP_POSTGRES)  
                 gtop->openflags |= GTAGS_POSTGRES;  
272          /*          /*
273           * decide format version.           * decide format version.
274           */           */
# Line 301  gtags_open(dbpath, root, db, mode, flags Line 283  gtags_open(dbpath, root, db, mode, flags
283          if (gtop->mode == GTAGS_CREATE) {          if (gtop->mode == GTAGS_CREATE) {
284                  if (flags & GTAGS_COMPACT) {                  if (flags & GTAGS_COMPACT) {
285                          gtop->format |= GTAGS_COMPACT;                          gtop->format |= GTAGS_COMPACT;
286                          dbop_put(gtop->dbop, COMPACTKEY, COMPACTKEY, "0");                          dbop_put(gtop->dbop, COMPACTKEY, COMPACTKEY);
287                  }                  }
288                  if (flags & GTAGS_PATHINDEX) {                  if (flags & GTAGS_PATHINDEX) {
289                          gtop->format |= GTAGS_PATHINDEX;                          gtop->format |= GTAGS_PATHINDEX;
290                          dbop_put(gtop->dbop, PATHINDEXKEY, PATHINDEXKEY, "0");                          dbop_put(gtop->dbop, PATHINDEXKEY, PATHINDEXKEY);
291                  }                  }
292                  if (gtop->format & (GTAGS_COMPACT|GTAGS_PATHINDEX)) {                  if (gtop->format & (GTAGS_COMPACT|GTAGS_PATHINDEX)) {
293                          char buf[80];                          char buf[80];
# Line 316  gtags_open(dbpath, root, db, mode, flags Line 298  gtags_open(dbpath, root, db, mode, flags
298                                  gtop->format_version = 2;                                  gtop->format_version = 2;
299                          snprintf(buf, sizeof(buf),                          snprintf(buf, sizeof(buf),
300                                  "%s %d", VERSIONKEY, gtop->format_version);                                  "%s %d", VERSIONKEY, gtop->format_version);
301                          dbop_put(gtop->dbop, VERSIONKEY, buf, "0");                          dbop_put(gtop->dbop, VERSIONKEY, buf);
302                  }                  }
303          } else {          } else {
304                  /*                  /*
# Line 368  gtags_open(dbpath, root, db, mode, flags Line 350  gtags_open(dbpath, root, db, mode, flags
350   *      i)      gtop    descripter of GTOP   *      i)      gtop    descripter of GTOP
351   *      i)      tag     tag name   *      i)      tag     tag name
352   *      i)      record  ctags -x image   *      i)      record  ctags -x image
  *      i)      fid     file id.  
353   *   *
354   * NOTE: If format is GTAGS_COMPACT then this function is destructive.   * NOTE: If format is GTAGS_COMPACT then this function is destructive.
355   */   */
356  void  void
357  gtags_put(gtop, tag, record, fid)  gtags_put(gtop, tag, record)
358          GTOP *gtop;          GTOP *gtop;
359          char *tag;          char *tag;
360          char *record;          char *record;
         char *fid;  
361  {  {
362          char *line, *path;          char *line, *path;
363          SPLIT ptable;          SPLIT ptable;
364    
365          if (gtop->format == GTAGS_STANDARD || gtop->format == GTAGS_PATHINDEX) {          if (gtop->format == GTAGS_STANDARD || gtop->format == GTAGS_PATHINDEX) {
366                  /* entab(record); */                  /* entab(record); */
367                  dbop_put(gtop->dbop, tag, record, fid);                  dbop_put(gtop->dbop, tag, record);
368                  return;                  return;
369          }          }
370          /*          /*
# Line 401  gtags_put(gtop, tag, record, fid) Line 381  gtags_put(gtop, tag, record, fid)
381           */           */
382          if (strcmp(gtop->prev_tag, tag) || strcmp(gtop->prev_path, path)) {          if (strcmp(gtop->prev_tag, tag) || strcmp(gtop->prev_path, path)) {
383                  if (gtop->prev_tag[0]) {                  if (gtop->prev_tag[0]) {
384                          dbop_put(gtop->dbop, gtop->prev_tag, strbuf_value(gtop->sb), gtop->prev_fid);                          dbop_put(gtop->dbop, gtop->prev_tag, strbuf_value(gtop->sb));
385                  }                  }
386                  strlimcpy(gtop->prev_tag, tag, sizeof(gtop->prev_tag));                  strlimcpy(gtop->prev_tag, tag, sizeof(gtop->prev_tag));
387                  strlimcpy(gtop->prev_path, path, sizeof(gtop->prev_path));                  strlimcpy(gtop->prev_path, path, sizeof(gtop->prev_path));
                 strlimcpy(gtop->prev_fid, fid, sizeof(gtop->prev_fid));  
388                  /*                  /*
389                   * Start creating new record.                   * Start creating new record.
390                   */                   */
# Line 465  gtags_add(gtop, comline, path, flags) Line 444  gtags_add(gtop, comline, path, flags)
444          /*          /*
445           * get file id.           * get file id.
446           */           */
447          if (gtop->format & GTAGS_PATHINDEX || gtop->openflags & GTAGS_POSTGRES) {          if (gtop->format & GTAGS_PATHINDEX) {
448                  if (!(fid = gpath_path2fid(path)))                  if (!(fid = gpath_path2fid(path)))
449                          die("GPATH is corrupted.('%s' not found)", path);                          die("GPATH is corrupted.('%s' not found)", path);
450          } else          } else
# Line 517  gtags_add(gtop, comline, path, flags) Line 496  gtags_add(gtop, comline, path, flags)
496                          else if ((p = locatestring(tag, "::", MATCH_LAST)) != NULL)                          else if ((p = locatestring(tag, "::", MATCH_LAST)) != NULL)
497                                  p += 2;                                  p += 2;
498                  }                  }
499                  gtags_put(gtop, p, ctags_x, fid);                  gtags_put(gtop, p, ctags_x);
500          }          }
501          if (pclose(ip) < 0)          if (pclose(ip) < 0)
502                  die("terminated abnormally.");                  die("terminated abnormally.");
# Line 582  gtags_delete(gtop, path) Line 561  gtags_delete(gtop, path)
561          if (gtop->format & GTAGS_PATHINDEX)          if (gtop->format & GTAGS_PATHINDEX)
562                  if ((path = gpath_fid2path(path)) == NULL)                  if ((path = gpath_fid2path(path)) == NULL)
563                          die("GPATH is corrupted.('%s' not found)", path);                          die("GPATH is corrupted.('%s' not found)", path);
 #ifdef USE_POSTGRES  
         if (gtop->openflags & GTAGS_POSTGRES) {  
                 char *fid;  
   
                 if ((fid = gpath_path2fid(path)) == NULL)  
                         die("GPATH is corrupted.('%s' not found)", path);  
                 dbop_delete_by_fid(gtop->dbop, fid);  
                 return;  
         }  
 #endif  
564          /*          /*
565           * read sequentially, because db(1) has just one index.           * read sequentially, because db(1) has just one index.
566           */           */
# Line 729  gtags_close(gtop) Line 698  gtags_close(gtop)
698          if (gtop->format & GTAGS_PATHINDEX || gtop->mode != GTAGS_READ)          if (gtop->format & GTAGS_PATHINDEX || gtop->mode != GTAGS_READ)
699                  gpath_close();                  gpath_close();
700          if (gtop->sb && gtop->prev_tag[0])          if (gtop->sb && gtop->prev_tag[0])
701                  dbop_put(gtop->dbop, gtop->prev_tag, strbuf_value(gtop->sb), "0");                  dbop_put(gtop->dbop, gtop->prev_tag, strbuf_value(gtop->sb));
702          if (gtop->sb)          if (gtop->sb)
703                  strbuf_close(gtop->sb);                  strbuf_close(gtop->sb);
704          if (gtop->ib)          if (gtop->ib)

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.52

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26