|
|
1.1 ! root 1: # include <stdio.h> ! 2: # include <ingres.h> ! 3: # include <aux.h> ! 4: # include <access.h> ! 5: # include <lock.h> ! 6: # include <pv.h> ! 7: # include <sccs.h> ! 8: ! 9: SCCSID(@(#)printr.c 8.2 2/8/85) ! 10: ! 11: ! 12: extern int Status; ! 13: short tTdbu[100]; ! 14: DESC Btreesec; ! 15: int Btree_fd; ! 16: ! 17: main(argc, argv) ! 18: int argc; ! 19: char *argv[]; ! 20: { ! 21: extern struct out_arg Out_arg; ! 22: register char **av; ! 23: register char *q; ! 24: register char *p; ! 25: int i; ! 26: int badf; ! 27: char style; ! 28: char *user_ovrd; ! 29: int mode; ! 30: int nc; ! 31: PARM pv[PV_MAXPC]; ! 32: PARM *pp; ! 33: extern char *Parmvect[]; ! 34: extern char *Flagvect[]; ! 35: extern char *Dbpath; ! 36: ! 37: argv[argc] = NULL; ! 38: ! 39: # ifdef xSTR1 ! 40: tTrace(argv, 'T', tTdbu, 100); ! 41: # endif ! 42: ! 43: mode = -1; ! 44: badf = 0; ! 45: ! 46: /* ! 47: ** Scan the argument vector and otherwise initialize. ! 48: */ ! 49: ! 50: i = initucode(argc, argv, TRUE, NULL, M_SHARE); ! 51: switch (i) ! 52: { ! 53: case 0: ! 54: case INDIRECT: ! 55: break; ! 56: ! 57: case NODB: ! 58: case INDNODB: ! 59: printf("Database %s does not exist\n", Parmvect[0]); ! 60: exit(-1); ! 61: ! 62: case NOACCESS: ! 63: printf("You are not authorized to access this database\n"); ! 64: exit(-1); ! 65: ! 66: case INVALIDUSR: ! 67: printf("You are not a valid INGRES user\n"); ! 68: exit(-1); ! 69: ! 70: case NODBNAME: ! 71: printf("No database name specified\n"); ! 72: badf++; ! 73: break; ! 74: ! 75: default: ! 76: syserr("main: initucode %d", i); ! 77: } ! 78: ! 79: for (av = Flagvect; (p = *av) != NULL; av++) ! 80: { ! 81: if (p[0] != '-') ! 82: goto badflag; ! 83: switch (p[1]) ! 84: { ! 85: case 'h': /* do headers on each page */ ! 86: mode = 0; ! 87: if (p[2] == 0) ! 88: break; ! 89: Out_arg.linesperpage = atoi(&p[2]); ! 90: break; ! 91: ! 92: case 's': /* supress headers and footers */ ! 93: mode = 1; ! 94: if (p[2] != 0) ! 95: goto badflag; ! 96: break; ! 97: ! 98: case 'c': /* set cNwidth */ ! 99: Out_arg.c0width = atoi(&p[2]); ! 100: break; ! 101: { ! 102: badflag: ! 103: printf("bad flag %s\n", p); ! 104: badf++; ! 105: continue; ! 106: } ! 107: break; ! 108: ! 109: case 'i': /* set iNwidth */ ! 110: switch (p[2]) ! 111: { ! 112: ! 113: case '1': ! 114: Out_arg.i1width = atoi(&p[3]); ! 115: break; ! 116: ! 117: case '2': ! 118: Out_arg.i2width = atoi(&p[3]); ! 119: break; ! 120: ! 121: case '4': ! 122: Out_arg.i4width = atoi(&p[3]); ! 123: break; ! 124: ! 125: default: ! 126: goto badflag; ! 127: ! 128: } ! 129: break; ! 130: ! 131: case 'f': /* set fNwidth */ ! 132: style = p[3]; ! 133: switch (style) ! 134: { ! 135: ! 136: case 'e': ! 137: case 'E': ! 138: case 'f': ! 139: case 'F': ! 140: case 'g': ! 141: case 'G': ! 142: case 'n': ! 143: case 'N': ! 144: break; ! 145: ! 146: default: ! 147: goto badflag; ! 148: ! 149: } ! 150: for (q = &p[4]; *q != '.'; q++) ! 151: if (*q == 0) ! 152: goto badflag; ! 153: *q++ = 0; ! 154: switch (p[2]) ! 155: { ! 156: ! 157: case '4': ! 158: Out_arg.f4width = atoi(&p[4]); ! 159: Out_arg.f4prec = atoi(q); ! 160: Out_arg.f4style = style; ! 161: break; ! 162: ! 163: case '8': ! 164: Out_arg.f8width = atoi(&p[4]); ! 165: Out_arg.f8prec = atoi(q); ! 166: Out_arg.f8style = style; ! 167: break; ! 168: ! 169: default: ! 170: goto badflag; ! 171: ! 172: } ! 173: break; ! 174: ! 175: case 'v': ! 176: if (p[2] == 0 || p[3] != 0) ! 177: goto badflag; ! 178: Out_arg.coldelim = p[2]; ! 179: break; ! 180: ! 181: default: ! 182: goto badflag; ! 183: } ! 184: } ! 185: ! 186: /* ! 187: ** Build parameter vector for print call ! 188: */ ! 189: ! 190: for (nc = 1, pp = pv; Parmvect[nc] != NULL; nc++) ! 191: ((pp++)->pv_val).pv_str = Parmvect[nc]; ! 192: if (mode != -1) ! 193: ((pp++)->pv_val).pv_int = mode; ! 194: pp->pv_type = PV_EOF; ! 195: ! 196: /* ! 197: ** Check for usage errors. ! 198: */ ! 199: ! 200: if (nc < 2) ! 201: { ! 202: badf++; ! 203: printf("usage: printr [flags] database relation ...\n"); ! 204: } ! 205: if (badf) ! 206: { ! 207: fflush(stdout); ! 208: exit(-1); ! 209: } ! 210: ! 211: p = Parmvect[0]; /* data base is first parameter */ ! 212: if (chdir(Dbpath) < 0) ! 213: syserr("cannot access data base %s", p); ! 214: # ifdef xTTR2 ! 215: if (tTf(1, 0)) ! 216: printf("entered database %s\n", Dbpath); ! 217: # endif ! 218: ! 219: /* initialize access methods (and Admin struct) for user_ovrd test */ ! 220: acc_init(); ! 221: ! 222: set_so_buf(); ! 223: # ifdef xTTR1 ! 224: if (tTf(1, 1)) ! 225: printf("printing %s\n", p); ! 226: # endif ! 227: ! 228: print(nc - 1, pv); ! 229: fflush(stdout); ! 230: exit(0); ! 231: } ! 232: ! 233: ! 234: ! 235: rubproc() ! 236: { ! 237: fflush(stdout); ! 238: exit(0); ! 239: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.