int create_num(int num) { int ret; int tmp; while (1) { ret = mylock(); if (ret != 0) { fprintf(stderr, "mylock fail!\n"); exit(1); } tmp = getnum(PRIMER); if (tmp != 0) { ret = myunlock(); if (ret != 0) { fprintf(stderr, "myunlock fail!\n"); exit(1); } continue; } ret = setnum(PRIMER, num); if (ret != 0) { fprintf(stderr, "setnum() error!\n"); exit(1); } ret = myunlock(); if (ret != 0) { fprintf(stderr, "myunlock fail!\n"); exit(1); } } return 0; }
int do_child(void) { int ret; int tmp; int i; while (1) { ret = mylock(); if (ret != 0) { fprintf(stderr, "mylock fail!\n"); exit(1); } if ((tmp = getnum(PRIMER)) == 0) { ret = myunlock(); if (ret != 0) { fprintf(stderr, "myunlock fail!\n"); exit(1); } continue; } if (tmp == END) { ret = myunlock(); if (ret != 0) { fprintf(stderr, "myunlock fail!\n"); exit(1); } break; } ret = setnum(PRIMER, 0); if (ret != 0) { fprintf(stderr, "setnum() error!\n"); exit(1); } ret = myunlock(); if (ret != 0) { fprintf(stderr, "myunlock fail!\n"); exit(1); } for (i=2;i<tmp/2;i++) { if (tmp%i == 0) { ret = 0; break; } ret = 1; continue; } if (ret == 1) { printf("%d\n", tmp); } } exit(0); }
void process(Biobuf *b, char *name) { int c, r, v, i; char *p; cno = 0; prevlineH = res; filename = name; for(;;){ c = getc(b); switch(c){ case Beof: /* go to ground state */ attr = 0; emit('\n'); return; case '\n': break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': v = c-'0'; c = getc(b); if(c<'0' || '9'<c) sysfatal("illegal character motion at %s:#%d", filename, cno); v = v*10 + (c-'0'); hp += v; /* fall through to character case */ case 'c': indent(); r = getc(b); emithtmlchar(r); break; case 'D': /* draw line; ignore */ do c = getc(b); while(c!='\n' && c!= Beof); break; case 'f': v = setnum(b, "font", 0, Nfont); switchfont(v); break; case 'h': v = setnum(b, "hpos", -20000, 20000); /* generate spaces if motion is large and within a line */ if(!atnewline && v>2*72) for(i=0; i<v; i+=72) emitstr(" "); hp += v; break; case 'n': setnum(b, "n1", -10000, 10000); //Bprint(&bout, " N1=%d", v); getc(b); /* space separates */ setnum(b, "n2", -10000, 10000); atnewline = 1; if(!didP && hp < (Wid-1)*res) /* if line is less than 19" long, probably need a line break */ emitstr("<br>"); emit('\n'); break; case 'p': page = setnum(b, "ps", -10000, 10000); break; case 's': ps = setnum(b, "ps", 1, 1000); break; case 'v': vp += setnum(b, "vpos", -10000, 10000); /* BUG: ignore motion */ break; case 'x': xcmd(b); break; case 'w': emit(' '); break; case 'C': indent(); p = getstr(b); emitstr(troffchar(p)); break; case 'H': hp = setnum(b, "hpos", 0, 20000); //Bprint(&bout, " H=%d ", hp); break; case 'V': vp = setnum(b, "vpos", 0, 10000); break; default: fprint(2, "dhtml: unknown directive %c(0x%.2ux) at %s:#%d\n", c, c, filename, cno); return; } } }
card::card(char n){ setnum(n); }