int main() { int i,j,k,t,s,delta, d_str, j_sdvig, index; char dir1[15] = "win"; char dir2[15] = "winXP"; char del; char raz = '\\'; char str[260] = "C:\\win\\explorer.exe+C:\\Wpn\\sys\\tem32+C:\\win\\Distrib"; char *ptr[10]; char *ptr_dir1[10]; char *ptr_raz[10]; printf("delim: "); scanf("%c",&del); char *suf = str; //C:\\Windows\\system32+C:\\User\\test+C:\\user\\explorer.exe+C:\\Windows\\Distrib /* printf("paths: "); scanf("%s",&str); printf("dir1: "); scanf("%s",&dir1); printf("dir2: "); scanf("%s",&dir2);*/ delta = slen(dir1) - slen(dir2); d_str = slen(str); //printf("delta = %d\n", delta); i = stok(str, del, ptr); k = stok(dir1, raz, ptr_dir1); //t = stok(ptr[0], raz, ptr_raz); //printf("k = %d\n", k); int f = 0; for(j = 0; j < i; j++) { sspn(ptr[j]); } for (j = 0; j < i; j++) { t = stok(ptr[j], raz, ptr_raz); if(k > 1){ for (s = 0; s < k; s++) { f += sequal(ptr_dir1[s], ptr_raz[s]); if (f == k) { index = ptr_raz[s+1] - suf; if (delta < 0) { for (j_sdvig = d_str - delta; j_sdvig > index + delta; j_sdvig--) { str[j_sdvig - delta] = str[j_sdvig]; } for (j_sdvig = j; j_sdvig < i; j_sdvig++) { ptr[j_sdvig + 1] = ptr[j_sdvig + 1] - delta; } ptr_raz[s +1] = ptr_raz[s + 1] - delta; } if (delta > 0) { //d_str = d_str - delta; for (j_sdvig = index; j_sdvig < d_str; j_sdvig++) { str[j_sdvig - delta] = str[j_sdvig]; } str[d_str-delta] = '\0'; for (j_sdvig = j; j_sdvig < i; j_sdvig++) { ptr[j_sdvig + 1] = ptr[j_sdvig + 1] - delta; } ptr_raz[s + 1] = ptr_raz[s + 1] - delta; } //shift(*ptr, *ptr_raz, str, d_str, index, delta, s, j); suntok(ptr[j], raz, ptr_raz, t); scopy(dir2, ptr[j]); f = 0; } suntok(ptr[j], raz, ptr_raz, t); } } for (s = 0; s < t; s++) { f += sequal(dir1, ptr_raz[s]); //printf("f = %d\n", f); if(f == 1){ //printf("s = %d\n", s); index = ptr_raz[s+1] - suf; ///printf("index= %d\n ", index); if (delta < 0) { for (j_sdvig = d_str - delta; j_sdvig > index + delta; j_sdvig--) { str[j_sdvig - delta] = str[j_sdvig]; } for (j_sdvig = j; j_sdvig < i; j_sdvig++) { ptr[j_sdvig + 1] = ptr[j_sdvig + 1] - delta; } ptr_raz[s + 1] = ptr_raz[s + 1] - delta; } if (delta > 0) { for (j_sdvig = index; j_sdvig < d_str; j_sdvig++) { str[j_sdvig - delta] = str[j_sdvig]; } str[d_str-delta] = '\0'; for (j_sdvig = j; j_sdvig < i; j_sdvig++) { ptr[j_sdvig + 1] = ptr[j_sdvig + 1] - delta; } ptr_raz[s + 1] = ptr_raz[s + 1] - delta; } scopy(dir2, ptr_raz[s]); f = 0; } suntok(ptr[j], raz, ptr_raz, t); } //f = 0; } suntok(str, del, ptr, i); printf("%s",str); return 0; }
void setup(void) { struct cvntab *r; int i, j; double f; int d; int klump; int ix, iy; struct quad *q; struct event *e; while (1) { r = getcodpar("What length game", Lentab); Game.length = (long) r->value; if (Game.length == 0) { if (restartgame()) continue; return; } break; } r = getcodpar("What skill game", Skitab); Game.skill = (long) r->value; Game.tourn = 0; getstrpar("Enter a password", Game.passwd, 14, 0); if (sequal(Game.passwd, "tournament")) { getstrpar("Enter tournament code", Game.passwd, 14, 0); Game.tourn = 1; d = 0; for (i = 0; Game.passwd[i]; i++) d += Game.passwd[i] << i; srandom(d); } Param.bases = Now.bases = ranf(6 - Game.skill) + 2; if (Game.skill == 6) Param.bases = Now.bases = 1; Param.time = Now.time = 6.0 * Game.length + 2.0; i = Game.skill; j = Game.length; Param.klings = Now.klings = i * j * 3.5 * (franf() + 0.75); if (Param.klings < i * j * 5) Param.klings = Now.klings = i * j * 5; if (Param.klings <= i) /* numerical overflow problems */ Param.klings = Now.klings = 127; Param.energy = Ship.energy = 5000; Param.torped = Ship.torped = 10; Ship.ship = ENTERPRISE; Ship.shipname = "Enterprise"; Param.shield = Ship.shield = 1500; Param.resource = Now.resource = Param.klings * Param.time; Param.reserves = Ship.reserves = (6 - Game.skill) * 2.0; Param.crew = Ship.crew = 387; Param.brigfree = Ship.brigfree = 400; Ship.shldup = 1; Ship.cond = GREEN; Ship.warp = 5.0; Ship.warp2 = 25.0; Ship.warp3 = 125.0; Ship.sinsbad = 0; Ship.cloaked = 0; Param.date = Now.date = (ranf(20) + 20) * 100; f = Game.skill; f = log(f + 0.5); for (i = 0; i < NDEV; i++) if (Device[i].name[0] == '*') Param.damfac[i] = 0; else Param.damfac[i] = f; /* these probabilities must sum to 1000 */ Param.damprob[WARP] = 70; /* warp drive 7.0% */ Param.damprob[SRSCAN] = 110; /* short range scanners 11.0% */ Param.damprob[LRSCAN] = 110; /* long range scanners 11.0% */ Param.damprob[PHASER] = 125; /* phasers 12.5% */ Param.damprob[TORPED] = 125; /* photon torpedoes 12.5% */ Param.damprob[IMPULSE] = 75; /* impulse engines 7.5% */ Param.damprob[SHIELD] = 150; /* shield control 15.0% */ Param.damprob[COMPUTER] = 20; /* computer 2.0% */ Param.damprob[SSRADIO] = 35; /* subspace radio 3.5% */ Param.damprob[LIFESUP] = 30; /* life support 3.0% */ Param.damprob[SINS] = 20; /* navigation system 2.0% */ Param.damprob[CLOAK] = 50; /* cloaking device 5.0% */ Param.damprob[XPORTER] = 80; /* transporter 8.0% */ /* check to see that I didn't blow it */ for (i = j = 0; i < NDEV; i++) j += Param.damprob[i]; if (j != 1000) syserr("Device probabilities sum to %d", j); Param.dockfac = 0.5; Param.regenfac = (5 - Game.skill) * 0.05; if (Param.regenfac < 0.0) Param.regenfac = 0.0; Param.warptime = 10; Param.stopengy = 50; Param.shupengy = 40; i = Game.skill; Param.klingpwr = 100 + 150 * i; if (i >= 6) Param.klingpwr += 150; Param.phasfac = 0.8; Param.hitfac = 0.5; Param.klingcrew = 200; Param.srndrprob = 0.0035; Param.moveprob[KM_OB] = 45; Param.movefac[KM_OB] = .09; Param.moveprob[KM_OA] = 40; Param.movefac[KM_OA] = -0.05; Param.moveprob[KM_EB] = 40; Param.movefac[KM_EB] = 0.075; Param.moveprob[KM_EA] = 25 + 5 * Game.skill; Param.movefac[KM_EA] = -0.06 * Game.skill; Param.moveprob[KM_LB] = 0; Param.movefac[KM_LB] = 0.0; Param.moveprob[KM_LA] = 10 + 10 * Game.skill; Param.movefac[KM_LA] = 0.25; Param.eventdly[E_SNOVA] = 0.5; Param.eventdly[E_LRTB] = 25.0; Param.eventdly[E_KATSB] = 1.0; Param.eventdly[E_KDESB] = 3.0; Param.eventdly[E_ISSUE] = 1.0; Param.eventdly[E_SNAP] = 0.5; Param.eventdly[E_ENSLV] = 0.5; Param.eventdly[E_REPRO] = 2.0; Param.navigcrud[0] = 1.50; Param.navigcrud[1] = 0.75; Param.cloakenergy = 1000; Param.energylow = 1000; for (i = 0; i < MAXEVENTS; i++) { e = &Event[i]; e->date = TOOLARGE; e->evcode = 0; } xsched(E_SNOVA, 1, 0, 0, 0); xsched(E_LRTB, Param.klings, 0, 0, 0); xsched(E_KATSB, 1, 0, 0, 0); xsched(E_ISSUE, 1, 0, 0, 0); xsched(E_SNAP, 1, 0, 0, 0); Ship.sectx = ranf(NSECTS); Ship.secty = ranf(NSECTS); Game.killk = Game.kills = Game.killb = 0; Game.deaths = Game.negenbar = 0; Game.captives = 0; Game.killinhab = 0; Game.helps = 0; Game.killed = 0; Game.snap = 0; Move.endgame = 0; /* setup stars */ for (i = 0; i < NQUADS; i++) { for (j = 0; j < NQUADS; j++) { q = &Quad[i][j]; q->klings = q->bases = 0; q->scanned = -1; q->stars = ranf(9) + 1; q->holes = ranf(3) - q->stars / 5; q->qsystemname = 0; } } /* select inhabited starsystems */ for (d = 1; d < NINHAB; d++) { do { i = ranf(NQUADS); j = ranf(NQUADS); q = &Quad[i][j]; } while (q->qsystemname); q->qsystemname = d; } /* position starbases */ for (i = 0; i < Param.bases; i++) { while (1) { ix = ranf(NQUADS); iy = ranf(NQUADS); q = &Quad[ix][iy]; if (q->bases > 0) continue; break; } q->bases = 1; Now.base[i].x = ix; Now.base[i].y = iy; q->scanned = 1001; /* start the Enterprise near starbase */ if (i == 0) { Ship.quadx = ix; Ship.quady = iy; } } /* position klingons */ for (i = Param.klings; i > 0; ) { klump = ranf(4) + 1; if (klump > i) klump = i; while (1) { ix = ranf(NQUADS); iy = ranf(NQUADS); q = &Quad[ix][iy]; if (q->klings + klump > MAXKLQUAD) continue; q->klings += klump; i -= klump; break; } } /* initialize this quadrant */ printf("%d Klingons\n%d starbase", Param.klings, Param.bases); if (Param.bases > 1) printf("s"); printf(" at %d,%d", Now.base[0].x, Now.base[0].y); for (i = 1; i < Param.bases; i++) printf(", %d,%d", Now.base[i].x, Now.base[i].y); printf("\nIt takes %d units to kill a Klingon\n", Param.klingpwr); Move.free = 0; initquad(0); srscan(1); attack(0); }
int check(char *s) { char d_ru[] = "ru"; char d_com[] = "com"; char d_org[] = "org"; char err_sym[] = {':', '*', '?', '<', ' ', '>', '|', '"', '\\', '@', ',', ';', '#', '$', '%', '^', '&', '(', ')', '\0'}; char IP_num[]="0123456789"; char prot_h[] = "http:"; char prot_s[] = "smb:"; char prot_f[] = "ftp:"; char prot_r[] = "rsync:"; char *slash_ptr[50]; char *dot_ptr[10]; int count_slash, count_dot, ERROR; int i; /* Length of string */ if (slen(s) == 0) { printf("\tInsufficient length(0)\n"); return ERROR = ERROR_LENGTH; } /* The less length of string is 10 */ if (slen(s) < 10) { printf("\tToo short string / not enough information about path\n"); return ERROR = ERROR_LENGTH; } /* Length of string >= 261 */ if (slen(s) >= string_size) { printf("\tNot correct lenght string(>= 261)\n"); return ERROR = ERROR_LENGTH; } count_slash = stok(s, '/', slash_ptr); // Counting number of slashes and stok it /* slashes verification */ if ((count_slash >= 3) && (*slash_ptr[1] == '\0') && (*slash_ptr[2] != '\0') && (*slash_ptr[0] != '\0')) { ERROR = NO_ERROR; } else { printf("\tIncorrectly placed slashes\n"); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_SLASHES; } /* protocol verification and counting number of dots */ if ((sequal(*slash_ptr, prot_h) == 1) || (sequal(*slash_ptr, prot_s) == 1) || (sequal(*slash_ptr, prot_f) == 1) || (sequal(*slash_ptr, prot_r) == 1)){ count_dot = stok(*(slash_ptr + 2), '.', dot_ptr); // Counting number of dots } else { printf("\tProtocol is false %s\n", *slash_ptr); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_PROTOCOL; } /* If it's domain */ if (count_dot == 2) { if (slen(*(dot_ptr)) == 0) { printf("\tLength of addres before the first dot == NULL\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_LENGTH; } if (scspn(*(dot_ptr), err_sym) == -1) {// check on err_sym (*address*) if (scspn(*(dot_ptr + 1), err_sym) >= 0) { //check on err_sym (*.ru) printf("\tFounded invalid symbols in the top domain\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } if ((sequal(*(dot_ptr + 1), d_com) == 1) || (sequal(*(dot_ptr + 1), d_org) == 1) || (sequal(*(dot_ptr + 1), d_ru) == 1)) { // the top domain verification /* check directory */ for (i = 3; i < count_slash; i++) { if ((*slash_ptr[i] == '\0') && ((i + 1) < count_slash)) { printf("\tIncorrect length of directory\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_LENGTH_LL; } if (scspn(slash_ptr[i], err_sym) >= 0) { printf("\tFounded invalid symbols in directory\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } } suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = NO_ERROR; } else { printf("\tThe top domain is false"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_DOMAIN; } } else { printf("\tNot correct domain, founded invalid symbols\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } } else if (count_dot == 4) {// If it's IP address for (i = 0; i < count_dot; i++) { if (slen(*(dot_ptr + i)) == 0) { printf("\tIncorrect length of the ip\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_LENGTH_IP; } if (scspn(*(dot_ptr + i), err_sym) >= 0) { printf("not correct IP, founded invalid symbols\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } if (sspn(*(dot_ptr + i), IP_num) == -1 ){ printf("not correct IP, founded invalid symbols for IP(not numeral)\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } if ((atoi_str(*(dot_ptr + i)) > 255) || (atoi_str(*(dot_ptr + i)) < 0)) { printf("Not correct IP(> 255 or < 0)\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_RANGE_IP; } } /* check directory */ for (i = 3; i < count_slash; i++) { if ((*slash_ptr[i] == '\0') && ((i + 1) < count_slash)) { printf("\tIncorrect length of directory\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_LENGTH_LL; } if (scspn(slash_ptr[i], err_sym) >= 0) { printf("\tFounded invalid symbols in directory\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_INV_SYMB; } } suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = NO_ERROR; } else { printf("\tNot correct domain \\ IP (dots)\n"); suntok(*(slash_ptr + 2), '.', dot_ptr, count_dot); suntok(s, '/', slash_ptr, count_slash); return ERROR = ERROR_DOTS; } }