|
|
1.1 ! root 1: %{ ! 2: #include <sys/types.h> ! 3: #include <pwd.h> ! 4: #include <sys/stat.h> ! 5: #include <time.h> ! 6: #include "header.h" ! 7: ! 8: char *wpn = "311403-0101"; /*default 1127 workproject number*/ ! 9: #define DATE DOCNUM+6 ! 10: #define SEQNUM DOCNUM+13 ! 11: #define TYPE DOCNUM+15 ! 12: #define SOFT DOCNUM+17 ! 13: struct passwd *getpwuid(), *ps; ! 14: int soft; ! 15: char *p, *s1, *s2; ! 16: char *getarg(); ! 17: int type, ci=0, pm=0, rl=0; ! 18: char buf[HEADSIZE]; ! 19: char *co = &buf[CO]; ! 20: char *dept = &buf[DOCNUM], *date = &buf[DATE], *seqnum = &buf[SEQNUM]; ! 21: char *stype = &buf[TYPE], *ssoft = &buf[SOFT]; ! 22: char *machine = buf; ! 23: char *login = &buf[ULOG], *timestamp = &buf[TIMESTAMP]; ! 24: char *version = &buf[VERSION]; ! 25: char *pages = &buf[PAGES]; ! 26: int more = 1; ! 27: %} ! 28: %% ! 29: ^".so".* ; ! 30: ^".TI" { ! 31: printf(".TL\n"); ! 32: } ! 33: ^".DT".* ; ! 34: ^".AH".* { ! 35: s1 = s2 = &yytext[0]; ! 36: p = getarg(); ! 37: yytext[yyleng] = '\0'; ! 38: printf(".AU %s \"\" %s\n",p, s2+2); ! 39: more = 1; ! 40: } ! 41: ^".AP".* { ! 42: yytext[yyleng] = '\0'; ! 43: printf(".rP %s\n",&yytext[3]); ! 44: } ! 45: ^".SA" { ! 46: printf(".AS\n"); ! 47: } ! 48: ^".SE" { ! 49: printf(".AE\n"); ! 50: } ! 51: ^".KW".* { ! 52: printf(".OK %s\n",&yytext[3]); ! 53: } ! 54: ^".TY".* { ! 55: for(p = &yytext[3]; *p == ' ';p++); ! 56: if(*p == 'I')type=2; ! 57: else if(*(p+1) == 'M')type=1; ! 58: else type=3; ! 59: *stype = *p; ! 60: *(stype+1) = *(p+1); ! 61: while(*p != ' '){ ! 62: if(*p == '\n'){ ! 63: soft=0; ! 64: break; ! 65: } ! 66: p++; ! 67: } ! 68: if(*p == ' ') ! 69: if(*++p == 'y') ! 70: soft=1; ! 71: printf(".MT %d\n",type); ! 72: if(soft){ ! 73: *ssoft = 'S'; ! 74: printf(".sF\n"); ! 75: } ! 76: } ! 77: ^".NU".* { ! 78: yytext[yyleng] = '\0'; ! 79: type = 0; ! 80: s1 = s2 = &yytext[0]; ! 81: p = getarg(); ! 82: if(p != 0){ ! 83: sprintf(dept,"%s-",p); ! 84: printf(".dN %s-",p); ! 85: type = 1; ! 86: } ! 87: if(more){ ! 88: p = getarg(); ! 89: if(p != 0){ ! 90: sprintf(date,"%s-",p); ! 91: printf("%s-",p); ! 92: } ! 93: } ! 94: if(more){ ! 95: p = getarg(); ! 96: if(p != 0){ ! 97: *seqnum = *p; ! 98: *(seqnum+1) = *(p+1); ! 99: printf("%s\n",p); ! 100: } ! 101: else if(type) printf("\n"); ! 102: } ! 103: if(more){ ! 104: p = getarg(); ! 105: if(p != 0) ! 106: printf(".fC %s\n",p); ! 107: if(more){ ! 108: p = getarg(); ! 109: if(p != 0) ! 110: printf(".wP %s\n",p); ! 111: else printf(".wP %s\n",wpn); ! 112: } ! 113: } ! 114: more = 1; ! 115: } ! 116: ^".MY".* { ! 117: printf(".mE %s\n",&yytext[3]); ! 118: } ! 119: ^".ED".* { ! 120: printf(".eD %s'n",&yytext[3]); ! 121: } ! 122: ^".PR".* { ! 123: pm=1; ! 124: printf(".PM %s\n",&yytext[3]); ! 125: } ! 126: ^".RL".* { ! 127: rl=1; ! 128: if(yyleng>3){ ! 129: p=&yytext[3]; ! 130: while(*p == ' ')p++; ! 131: if(*p == '\"')p++; ! 132: if(*p == 'n')printf(".fA n\n"); ! 133: else printf(".fA y\n"); ! 134: } ! 135: else printf(".fA y\n"); ! 136: } ! 137: ^".GS" { ! 138: printf(".gS\n"); ! 139: } ! 140: ^".CI".* { ! 141: /* ci = 1; gone away ! 142: if(yyleng == 3) ! 143: printf(".cI n\n"); ! 144: else { ! 145: p = &yytext[3]; ! 146: while(*p == ' ')p++; ! 147: if(*p == '\n' || *p == 'n') ! 148: printf(".cI n\n"); ! 149: else if(*p == '\"')p++; ! 150: if(*p == 'y') ! 151: printf(".cI y\n"); ! 152: else if(*p == '\"' || *p == 'n') ! 153: printf(".cI n\n"); ! 154: else fprintf(stderr,".CI unknown argument %c\n",*p); ! 155: }*/ ! 156: } ! 157: ^".CO".* { ! 158: /* if(!ci){ ! 159: printf(".cI n\n"); ! 160: ci = 1; ! 161: }*/ ! 162: if(!rl){ ! 163: printf(".fA y\n"); ! 164: rl = 1; ! 165: } ! 166: printf(".cC\n"); ! 167: } ! 168: ^".CE" { ! 169: printf(".cE\n"); ! 170: } ! 171: ^".CV".* { ! 172: /* if(!ci){ ! 173: printf(".cI n\n"); ! 174: ci = 1; ! 175: }*/ ! 176: if(!rl){ ! 177: printf(".fA y\n"); ! 178: rl = 1; ! 179: } ! 180: printf(".cS\n"); ! 181: } ! 182: ^".SC".* { ! 183: /* if(!ci){ ! 184: printf(".cI n\n"); ! 185: ci = 1; ! 186: }*/ ! 187: if(!rl){ ! 188: printf(".fA y\n"); ! 189: rl = 1; ! 190: } ! 191: p = s1 = &yytext[3]; ! 192: while(*s1 == ' ')s1++; ! 193: while(*s1 != ' ')s1++; ! 194: while(*s1 == ' ')s1++; ! 195: while(*s1 != ' ')s1++; ! 196: *s1 = '\0'; ! 197: s1++; ! 198: printf(".CS %s \"\" %s\n", p, s1); ! 199: return(0); ! 200: } ! 201: .* { ! 202: ECHO; ! 203: printf("\n"); ! 204: } ! 205: \n ; ! 206: %% ! 207: char *header="/tmp/ "; ! 208: char *dest = "mhuxd!/usr/spool/uucppublic/doc.mcs"; ! 209: char *dco = "BL"; ! 210: main(argc, argv) ! 211: char *argv[]; ! 212: { ! 213: FILE *inp; ! 214: char *filename, *name, *cover, *pid; ! 215: int nuchars, npid, uid, days; ! 216: long mtime; ! 217: if(argc < 3){ ! 218: fprintf(stderr,"file name must be supplied to sendcover\n"); ! 219: exit(1); ! 220: } ! 221: if((inp=fopen("/etc/whoami","r")) == NULL){ ! 222: fprintf(stderr,"can't open /etc/whoami\n"); ! 223: exit(1); ! 224: } ! 225: nuchars = fread(machine, sizeof(char), 10, inp); ! 226: nuchars -= 1; ! 227: if(nuchars < 5)pid = machine + nuchars +1; ! 228: else pid = machine + 6; ! 229: cover = pid + 5; ! 230: fclose(inp); ! 231: *(pid-1) = '.'; ! 232: npid = getpid(); ! 233: sprintf(pid,"%05d",npid); ! 234: *cover = 'c'; ! 235: sprintf(&header[5],"%s",machine); ! 236: uid = getuid(); ! 237: if ((ps = getpwuid(uid)) == NULL){ ! 238: fprintf(stderr, "login not found"); ! 239: exit(1); ! 240: } ! 241: strcpy (login,ps->pw_name); ! 242: sprintf(version,"080687L"); /*version*/ ! 243: strcpy(co, dco); /*company name=BL*/ ! 244: name = argv[1]; ! 245: argc--; argv++; ! 246: if(freopen(argv[1],"r",stdin)==NULL) { ! 247: fprintf(stderr,"%s: cannot open\n", argv[1]); ! 248: exit(1); ! 249: } ! 250: if(freopen(header,"w",stdout)== NULL){ ! 251: fprintf(stderr,"%s: cannot open\n",header); ! 252: exit(1); ! 253: } ! 254: if((nuchars = fwrite(buf,sizeof(char),HEADSIZE,stdout)) != HEADSIZE){ ! 255: fprintf(stderr,"wrong number of characters written %d\n",nuchars); ! 256: exit(1); ! 257: } ! 258: filename = argv[1]; ! 259: mtime = getstamp(filename); ! 260: sprintf(timestamp,"%ld",mtime); ! 261: argv++; ! 262: sprintf(pages,"TP%s",argv[1]); ! 263: yylex(); ! 264: rewind(stdout); ! 265: for(p=buf; p < &buf[HEADSIZE-1]; p++) ! 266: if(*p == '\0')*p = ' '; ! 267: *p = '\n'; ! 268: if((nuchars = fwrite(buf,sizeof(char),HEADSIZE,stdout)) != HEADSIZE){ ! 269: fprintf(stderr,"wrong number of characters written %d\n",nuchars); ! 270: exit(1); ! 271: } ! 272: *(cover+1) = '\0'; ! 273: if((inp=fopen(name,"a")) == NULL){ ! 274: fprintf(stderr,"can't open tmp file %s\n",name); ! 275: exit(1); ! 276: } ! 277: fprintf(inp,"cd /tmp; uucp -m -C %s %s; rm %s\n",machine,dest,machine); ! 278: fclose(inp); ! 279: } ! 280: char * ! 281: getarg() ! 282: { ! 283: if(s1 == s2){ ! 284: while(*s1 != ' ') ! 285: if(*s1++ == '\0'){ ! 286: more = 0; ! 287: return(0); ! 288: } ! 289: } ! 290: else s1 = s2+1; ! 291: if(*s1 == ' ') ! 292: while(*s1 == ' ')s1++; ! 293: if(*s1 == '\0'){ ! 294: more = 0; ! 295: return(0); ! 296: } ! 297: if(*s1 == '\"'){ ! 298: if(*(s1+1) == '\"'){ ! 299: s2 = s1+1; ! 300: return(0); ! 301: } ! 302: for(s2=s1+1; *s2 != '\"'; s2++); ! 303: if(*(s2+1) == '\0'){ ! 304: more = 0; ! 305: *(s2+1) = '\0'; ! 306: return(s1); ! 307: } ! 308: else { ! 309: *(s2+1) = '\0'; ! 310: return(s1); ! 311: } ! 312: } ! 313: for(s2 = s1; *s2 != ' '; s2++) ! 314: if(*s2 == '\0'){ ! 315: more = 0; ! 316: *s2 = '\0'; ! 317: return(s1); ! 318: } ! 319: *s2 = '\0'; ! 320: return(s1); ! 321: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.