|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 2495 (0x9bf) Types: TextFile Names: »dbadd.c«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape └─⟦eba4602b1⟧ »./isode-5.0.tar.Z« └─⟦d3ac74d73⟧ └─⟦this⟧ »isode-5.0/others/rdbm/dbadd.c« └─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/others/rdbm/dbadd.c«
/* Program ddadd.c * Written March 1988, William J. Romine * Purpose This filter adds fixed length records to a dbm database. */ #include <dbm.h> #undef NULL #include <stdio.h> int dbopen(), dbclose(); #define DBOK 1 #define DBNOTOK 0 static struct m_foo { int strs; #define MAXSTRS 30 int xs[MAXSTRS]; int ys[MAXSTRS]; char str[MAXSTRS][80]; int items; int key; #define MAXITEMS 30 int size[MAXITEMS]; int xd[MAXITEMS]; int yd[MAXITEMS]; int up[MAXITEMS]; int down[MAXITEMS]; int right[MAXITEMS]; int left[MAXITEMS]; int next[MAXITEMS]; int where[MAXITEMS]; int rsize; } m; static char gstr[1025]; static datum tokey(), todat(); static void movexy(), tostr(); main(argc,argv) int argc; char *argv[]; { datum key, dat; if (dbopen(argv[1]) != DBOK) exit(1); while (gets(gstr) != NULL) { key = tokey(gstr); dat = todat(gstr); store(key,dat); } exit(0); } int dbopen(fname) char *fname; { int i; FILE *fp; char mname[20]; if (dbminit(fname) != 0) { fprintf(stderr,"dbopen: cant open file, %s\n",fname); perror("dbopen"); return(DBNOTOK); } (void) strcpy(mname,fname); (void) strcat(mname,".msk"); if ((fp = fopen(mname,"r")) == (FILE *) NULL) { fprintf(stderr,"dbopen: cant open file %s\n",fname); perror("dbopen"); return(DBNOTOK); } fscanf(fp,"%d",&m.strs); for (i = 0; i < m.strs; i++) { if (fscanf(fp,"%d,%d,'%[^']'",&m.xs[i],&m.ys[i],m.str[i]) != 3) { fprintf(stderr,"dbopen: cant read mask file string %d\n",i); return(DBNOTOK); } } fscanf(fp,"%d,%d",&m.items,&m.key); m.rsize = 0; for (i = 0; i < m.items; i++) { if (fscanf(fp,"%d,%d,%d,%d,%d,%d,%d,%d",&m.size[i],&m.xd[i], &m.yd[i],&m.up[i],&m.down[i],&m.right[i], &m.left[i],&m.next[i]) != 8) { fprintf(stderr,"dbopen: cant read mask file item %d\n",i); return(DBNOTOK); } m.where[i] = m.rsize; m.rsize += m.size[i]; } (void) fclose(fp); return(DBOK); } static void tostr(key,dat) datum key; char *dat; { strncpy(dat,key.dptr,key.dsize); } static datum todat(str) char *str; { static datum dat; dat.dptr = str; dat.dsize = m.rsize; return(dat); } static datum tokey(str) char *str; { static datum key; key.dptr = &str[m.where[m.key]]; key.dsize = m.size[m.key]; return(key); } static void blank(str) char *str; { int i; for (i = 0; i < m.rsize; i++) str[i] = ' '; }