head 1.8; access; symbols; locks; strict; comment @ * @; 1.8 date 94.03.12.00.59.25; author paul; state Exp; branches; next 1.7; 1.7 date 93.07.24.19.04.54; author paul; state Exp; branches; next 1.6; 1.6 date 93.04.02.16.14.43; author paul; state Exp; branches; next 1.5; 1.5 date 93.04.02.14.57.03; author paul; state Exp; branches; next 1.4; 1.4 date 93.02.27.21.06.24; author paul; state Exp; branches; next 1.3; 1.3 date 92.07.28.05.04.09; author paul; state Exp; branches; next 1.2; 1.2 date 92.07.27.22.20.02; author paul; state Exp; branches; next 1.1; 1.1 date 92.07.27.21.37.00; author paul; state Exp; branches; next ; desc @@ 1.8 log @New copyright statement. @ text @/* * Copyright (c) 1985 Corporation for Research and Educational Networking * Copyright (c) 1988 University of Illinois Board of Trustees, Steven * Dorner, and Paul Pomes * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the Corporation for * Research and Educational Networking (CREN), the University of * Illinois at Urbana, and their contributors. * 4. Neither the name of CREN, the University nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE TRUSTEES AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef lint static char RcsId[] = "@@(#)$Id$"; #endif /* * This program creates the files associated with a database. if the name of * the database is given, then all files are made. If a specific file is * named then that file only is made. A database name can't contain a ".". * The size is mandatory and is used to build the .idx file. */ #include "protos.h" #define DIR 1 #define INDEX 2 static char *Me; /* the name of this program */ main(argc, argv) int argc; char **argv; { int fd, fsize, ftype; char zero = 0; char *dotptr; char tmp[100]; struct dirhead Dirhead; /* when you're strange, no one remembers your name */ Me = *argv; while (--argc > 0 && **(++argv) == '-') { char *equal, **opt; (*argv)++; if (equal = strchr(*argv, '=')) { *equal++ = '\0'; for (opt = Strings; *opt; opt += 2) if (!strcmp(opt[0], *argv)) { opt[1] = equal; break; } if (*opt == '\0') { fprintf(stderr, "%s: %s: unknown string.\n", Me, *argv); exit(1); } } else { fprintf(stderr, "%s: %s: unknown option.\n", Me, *argv); exit(1); } } if (argc < 1 || (fsize = atoi(*argv)) == 0) { printf("usage: %s size [filename[.(idx|dir)]]\n", Me); exit(1); } fsize *= (sizeof (struct iindex)); argc--; argv++; Database = (argc > 0) ? *argv : DATABASE; fprintf(stderr, "%s: creating database %s\n", Me, Database); sleep(5); if (!(dotptr = strrchr(Database, '.'))) /* create all */ ftype = INDEX | DIR; else if (!strcmp(dotptr + 1, "dir")) { ftype = DIR; *dotptr = '\0'; } else if (!strcmp(dotptr + 1, "idx")) { ftype = INDEX; *dotptr = '\0'; } if (ftype & INDEX) { /* make index file ,uses size */ if (!strchr(Database, '.')) sprintf(tmp, "%s.idx", Database); else strcpy(tmp, Database); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } if (lseek(fd, fsize - 1, 0) < 0) { perror(tmp); exit(1); } if (write(fd, &zero, 1) < 0) { perror(tmp); exit(1); } printf("%s : %d bytes\n", tmp, fsize); close(fd); /* create overflow file */ sprintf(tmp, "%s.iov", Database); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } close(fd); } if (ftype & DIR) { if (!strchr(Database, '.')) sprintf(tmp, "%s.dir", Database); else strcpy(tmp, Database); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } Dirhead.nents = 0; Dirhead.next_id = 1; Dirhead.nfree = 0; if (lseek(fd, 0, 0) < 0) { perror(tmp); exit(1); } if (write(fd, &Dirhead, sizeof (Dirhead)) < 0) { perror(tmp); exit(1); } fsize = (sizeof (DREC)); if (lseek(fd, fsize - 1, 0) < 0) { perror(tmp); exit(1); } if (write(fd, &zero, 1) < 0) { perror(tmp); exit(1); } printf("%s : %d bytes\n", tmp, fsize); close(fd); /* create overflow file */ sprintf(tmp, "%s.dov", Database); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } close(fd); } exit(0); } @ 1.7 log @POSIX: index() -> strchr() @ text @d2 33 a34 5 * This software is Copyright (C) 1988 by Steven Dorner and the * University of Illinois Board of Trustees, and by CSNET. No warranties of * any kind are expressed or implied. No support will be provided. * This software may not be redistributed without prior consent of CSNET. * You may direct questions to nameserv@@uiuc.edu d36 4 @ 1.6 log @Announce which database is being smashed, uhhhh built, and pause 5 seconds. @ text @d41 1 a41 1 if (equal = index(*argv, '=')) d73 1 a73 1 if (!(dotptr = rindex(Database, '.'))) /* create all */ d86 1 a86 1 if (!index(Database, '.')) d120 1 a120 1 if (!index(Database, '.')) @ 1.5 log @WARNING: argument order reversed. Usage is now "credb size [filename]". Takes -DATABASE=/tmp/foo arguments ala qi. @ text @d71 2 @ 1.4 log @System 5 changes, 1 or more of #include instead of , define index/rindex replacements using strchr/strrchr, define L_SET, etc values if not present. @ text @a8 16 #include "db.h" #ifdef __STDC__ # include # include # ifndef index # define index strchr # define rindex strrchr # endif /* !index */ #else /* !__STDC__ */ char *index(); char *rindex(); #endif /* __STDC__ */ #define DIR 1 #define INDEX 2 d16 7 d33 30 a62 1 if (argc < 3) d64 1 a64 1 printf("usage: %s filename[.(idx|dir)] size\n", argv[0]); d67 5 a71 1 if (!(dotptr = rindex(argv[1], '.'))) /* create all */ d84 2 a85 2 if (!index(argv[1], '.')) sprintf(tmp, "%s.idx", argv[1]); d87 1 a87 1 strcpy(tmp, argv[1]); a92 2 fsize = atoi(argv[2]); fsize *= (sizeof (struct iindex)); d108 1 a108 1 sprintf(tmp, "%s.iov", argv[1]); d118 2 a119 2 if (!index(argv[1], '.')) sprintf(tmp, "%s.dir", argv[1]); d121 1 a121 1 strcpy(tmp, argv[1]); d155 1 a155 1 sprintf(tmp, "%s.dov", argv[1]); @ 1.3 log @Random fixes. @ text @d10 9 d20 1 @ 1.2 log @Re-formatted for clarity @ text @d10 2 d108 1 a108 1 fsize = (sizeof (D_record)); @ 1.1 log @Initial revision @ text @d1 7 a7 7 /********************************************************************* * This software is Copyright (C) 1988 by Steven Dorner and the * University of Illinois Board of Trustees, and by CSNET. No warranties of * any kind are expressed or implied. No support will be provided. * This software may not be redistributed without prior consent of CSNET. * You may direct questions to dorner@@garcon.cso.uiuc.edu. **********************************************************************/ a12 2 char *rindex(); d17 1 a17 1 * The size is mandatory and is used to build the .idx file. d21 2 a22 2 int argc; char **argv; d24 106 a129 110 int fd, fsize, ftype; char zero = 0; char *dotptr; char tmp[100]; struct dirhead Dirhead; if (argc < 3) { printf("usage: %s filename[.(idx|dir)] size\n", argv[0]); exit(1); } if (!(dotptr = rindex(argv[1], '.'))) /* create all */ ftype = INDEX | DIR; else if (!strcmp(dotptr + 1, "dir")) { ftype = DIR; *dotptr = '\0'; } else if (!strcmp(dotptr + 1, "idx")) { ftype = INDEX; *dotptr = '\0'; } if (ftype & INDEX) { /* make index file ,uses size */ if (!index(argv[1], '.')) sprintf(tmp, "%s.idx", argv[1]); else strcpy(tmp, argv[1]); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } fsize = atoi(argv[2]); fsize *= (sizeof(struct iindex)); if (lseek(fd, fsize - 1, 0)<0) { perror(tmp); exit(1); } if (write(fd, &zero, 1)<0) { perror(tmp); exit(1); } printf("%s : %d bytes\n", tmp, fsize); close(fd); /* create overflow file */ sprintf(tmp, "%s.iov", argv[1]); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } close(fd); } if (ftype & DIR) { if (!index(argv[1], '.')) sprintf(tmp, "%s.dir", argv[1]); else strcpy(tmp, argv[1]); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } Dirhead.nents = 0; Dirhead.next_id = 1; Dirhead.nfree = 0; if (lseek(fd, 0, 0)<0) { perror(tmp); exit(1); } if (write(fd, &Dirhead, sizeof(Dirhead))<0) { perror(tmp); exit(1); } fsize = (sizeof(D_record)); if (lseek(fd, fsize - 1, 0)<0) { perror(tmp); exit(1); } if (write(fd, &zero, 1)<0) { perror(tmp); exit(1); } printf("%s : %d bytes\n", tmp, fsize); close(fd); /* create overflow file */ sprintf(tmp, "%s.dov", argv[1]); if (!(fd = creat(tmp, 0664))) { perror(tmp); exit(1); } close(fd); } exit(0); @