main() { std::cout << "Hello World\n"; std::cout << function(); std::string a; std::cout << "\nEnter some text: "; std::getline(std::cin, a); std::reverse(a.begin(), a.end()); std::cout << "\n" << a; int n = readfile("Input"); writefiles(n); return 0; }
checkvalidbatch() { char s[90], bytes[10], code[10], baud[10], bps[10], numcps[10], cps[10], numerror[10], error[10], stops[10], paksize[10], regnum[10],k[80]; char drive[MAXDRIVE],dir[MAXDIR],filename[MAXFILE],ext[MAXEXT]; FILE *bu; int i,totalcps, totalerror,o,totalfiles,oldfps,totalfps; struct userfile tempu; totalcps=totalerror=totalfiles=totalfps=0; bu=fopen("TRANSFER.LOG","r"); if(bu==NULL) { nl(); pl("4Can't find log file!!"); fclose(bu); return; } oldfps=user.filepoints; for(i=0;i < que.files || (feof(bu)==0);i++) { fscanf(bu,"%s %s %s %s %s %s %s %s %s %s %s %s",code,bytes,baud,bps,numcps,cps,numerror,error,stops,paksize,s,regnum); strupr(code); if(code[0] != 'L' && code[0] != 'E' && code[0] != 'Q') { user.filepoints -= fstruct.filepoints; user.num_dl++; user.k_dl+=fstruct.bytes; fstruct.timesdl++; writeuser(); fnsplit(s,drive,dir,filename,ext); strcpy(s,filename); strcat(s,ext); o=read_file(s); writefiles(o); readuser(fstruct.uploader,&tempu); tempu.filepoints=+fstruct.filepoints; writeu(&tempu); totalfiles++; totalcps+=atoi(numcps); totalerror+=atoi(numerror); totalfps+=fstruct.filepoints; } } fclose(bu); put_char(12); title("Transfer Stats"); print("4Average CPS :3 %d",totalcps/totalfiles); nl(); print("4Baud :3 %s",baud); nl(); print("4Total Errors:3 %d",totalerror); nl(); print("4Total Files :3 %d",totalfiles); nl(); nl(); print("4Old FPS: 3%d",oldfps); nl(); print("4Cost : 3%d",totalfps); nl(); print("4 ÄÄÄÄÄÄ"); nl(); print("4New FPS: 3%d",(oldfps-totalfps)); nl(); nl(); }
void main(int argc, char **argv) { int fix; ulong block, newnull, cblock; vlong maxsize; uvlong length, clength; char buf[256], *dumpname, *proto, *s, *src, *status; Cdimg *cd; Cdinfo info; XDir dir; Direc *iconform, idumproot, iroot, *jconform, jdumproot, jroot, *r; Dump *dump; fix = 0; status = nil; memset(&info, 0, sizeof info); proto = "/sys/lib/sysconfig/proto/allproto"; src = "./"; info.volumename = atom("9CD"); info.volumeset = atom("9VolumeSet"); info.publisher = atom("9Publisher"); info.preparer = atom("dump9660"); info.application = atom("dump9660"); info.flags = CDdump; maxsize = 0; mk9660 = 0; fmtinstall('H', encodefmt); ARGBEGIN{ case 'D': chatty++; break; case 'M': mk9660 = 1; argv0 = "disk/mk9660"; info.flags &= ~CDdump; break; case '9': info.flags |= CDplan9; break; case ':': docolon = 1; break; case 'a': doabort = 1; break; case 'B': info.flags |= CDbootnoemu; /* fall through */ case 'b': if(!mk9660) usage(); info.flags |= CDbootable; info.bootimage = EARGF(usage()); break; case 'c': info.flags |= CDconform; break; case 'f': fix = 1; break; case 'j': info.flags |= CDjoliet; break; case 'n': now = atoi(EARGF(usage())); break; case 'm': maxsize = strtoull(EARGF(usage()), 0, 0); break; case 'o': dataoffset = atoll(EARGF(usage())); blocksize = atoi(EARGF(usage())); if(blocksize%Blocksize) sysfatal("bad block size %d -- must be multiple of 2048", blocksize); blocksize /= Blocksize; break; case 'p': proto = EARGF(usage()); break; case 'r': info.flags |= CDrockridge; break; case 's': src = EARGF(usage()); break; case 'v': info.volumename = atom(EARGF(usage())); break; case 'x': info.flags |= CDpbs; info.loader = EARGF(usage()); break; default: usage(); }ARGEND if(info.flags & CDpbs && !(info.flags & CDbootnoemu)) usage(); if(mk9660 && (fix || now || maxsize)) usage(); if(argc != 1) usage(); if(now == 0) now = (ulong)time(0); if(mk9660){ if((cd = createcd(argv[0], info)) == nil) sysfatal("cannot create '%s': %r", argv[0]); }else{ if((cd = opencd(argv[0], info)) == nil) sysfatal("cannot open '%s': %r", argv[0]); if(!(cd->flags & CDdump)) sysfatal("not a dump cd"); } /* create ISO9660/Plan 9 tree in memory */ memset(&dir, 0, sizeof dir); dir.name = atom(""); dir.uid = atom("sys"); dir.gid = atom("sys"); dir.uidno = 0; dir.gidno = 0; dir.mode = DMDIR | 0755; dir.mtime = now; dir.atime = now; dir.ctime = now; mkdirec(&iroot, &dir); iroot.srcfile = src; /* * Read new files into memory */ if(rdproto(proto, src, addprotofile, nil, &iroot) < 0) sysfatal("rdproto: %r"); if(mk9660){ dump = emalloc(sizeof *dump); dumpname = nil; }else{ /* * Read current dump tree and _conform.map. */ idumproot = readdumpdirs(cd, &dir, isostring); readdumpconform(cd); if(cd->flags & CDjoliet) jdumproot = readdumpdirs(cd, &dir, jolietstring); if(fix){ dumpname = nil; cd->nextblock = cd->nulldump+1; cd->nulldump = 0; Cwseek(cd, (vlong)cd->nextblock * Blocksize); goto Dofix; } dumpname = adddumpdir(&idumproot, now, &dir); /* note that we assume all names are conforming and thus sorted */ if(cd->flags & CDjoliet) { s = adddumpdir(&jdumproot, now, &dir); if(s != dumpname) sysfatal("dumpnames don't match %s %s", dumpname, s); } dump = dumpcd(cd, &idumproot); cd->nextblock = cd->nulldump+1; } /* * Write new files, starting where the dump tree was. * Must be done before creation of the Joliet tree so that * blocks and lengths are correct. */ if(dataoffset > (vlong)cd->nextblock * Blocksize) cd->nextblock = (dataoffset+Blocksize-1)/Blocksize; Cwseek(cd, (vlong)cd->nextblock * Blocksize); writefiles(dump, cd, &iroot); if(cd->bootimage){ findbootimage(cd, &iroot); if(cd->loader) findloader(cd, &iroot); Cupdatebootcat(cd); } /* create Joliet tree */ if(cd->flags & CDjoliet) copydirec(&jroot, &iroot); if(info.flags & CDconform) { checknames(&iroot, isbadiso9660); convertnames(&iroot, struprcpy); } else convertnames(&iroot, (void *) strcpy); // isoabstract = findconform(&iroot, abstract); // isobiblio = findconform(&iroot, biblio); // isonotice = findconform(&iroot, notice); dsort(&iroot, isocmp); if(cd->flags & CDjoliet) { // jabstract = findconform(&jroot, abstract); // jbiblio = findconform(&jroot, biblio); // jnotice = findconform(&jroot, notice); checknames(&jroot, isbadjoliet); convertnames(&jroot, (void *) strcpy); dsort(&jroot, jolietcmp); } /* * Write directories. */ writedirs(cd, &iroot, Cputisodir); if(cd->flags & CDjoliet) writedirs(cd, &jroot, Cputjolietdir); if(mk9660){ cblock = 0; clength = 0; newnull = 0; }else{ /* * Write incremental _conform.map block. */ wrconform(cd, cd->nconform, &cblock, &clength); /* jump here if we're just fixing up the cd */ Dofix: /* * Write null dump header block; everything after this will be * overwritten at the next dump. Because of this, it needs to be * reconstructable. We reconstruct the _conform.map and dump trees * from the header blocks in dump.c, and we reconstruct the path * tables by walking the cd. */ newnull = Cputdumpblock(cd); } if(info.flags & CDpbs) Cfillpbs(cd); /* * Write _conform.map. */ dir.mode = 0444; if(cd->flags & (CDconform|CDjoliet)) { if(!mk9660 && cd->nconform == 0){ block = cblock; length = clength; }else wrconform(cd, 0, &block, &length); if(mk9660) { idumproot = iroot; jdumproot = jroot; } if(length) { /* The ISO9660 name will get turned into uppercase when written. */ if((iconform = walkdirec(&idumproot, "_conform.map")) == nil) iconform = adddirec(&idumproot, "_conform.map", &dir); jconform = nil; if(cd->flags & CDjoliet) { if((jconform = walkdirec(&jdumproot, "_conform.map")) == nil) jconform = adddirec(&jdumproot, "_conform.map", &dir); } iconform->block = block; iconform->length = length; if(cd->flags & CDjoliet) { jconform->block = block; jconform->length = length; } } if(mk9660) { iroot = idumproot; jroot = jdumproot; } } if(mk9660){ /* * Patch in root directories. */ setroot(cd, cd->iso9660pvd, iroot.block, iroot.length); setvolsize(cd, cd->iso9660pvd, cd->nextblock); if(cd->flags & CDjoliet){ setroot(cd, cd->jolietsvd, jroot.block, jroot.length); setvolsize(cd, cd->jolietsvd, cd->nextblock); } }else{ /* * Write dump tree at end. We assume the name characters * are all conforming, so everything is already sorted properly. */ convertnames(&idumproot, (info.flags & CDconform) ? (void *) struprcpy : (void *) strcpy); if(cd->nulldump) { r = walkdirec(&idumproot, dumpname); assert(r != nil); copybutname(r, &iroot); } if(cd->flags & CDjoliet) { convertnames(&jdumproot, (void *) strcpy); if(cd->nulldump) { r = walkdirec(&jdumproot, dumpname); assert(r != nil); copybutname(r, &jroot); } } writedumpdirs(cd, &idumproot, Cputisodir); if(cd->flags & CDjoliet) writedumpdirs(cd, &jdumproot, Cputjolietdir); /* * Patch in new root directory entry. */ setroot(cd, cd->iso9660pvd, idumproot.block, idumproot.length); setvolsize(cd, cd->iso9660pvd, cd->nextblock); if(cd->flags & CDjoliet){ setroot(cd, cd->jolietsvd, jdumproot.block, jdumproot.length); setvolsize(cd, cd->jolietsvd, cd->nextblock); } } writepathtables(cd); if(!mk9660){ /* * If we've gotten too big, truncate back to what we started with, * fix up the cd, and exit with a non-zero status. */ Cwflush(cd); if(cd->nulldump && maxsize && Cwoffset(cd) > maxsize){ fprint(2, "too big; writing old tree back\n"); status = "cd too big; aborted"; rmdumpdir(&idumproot, dumpname); rmdumpdir(&jdumproot, dumpname); cd->nextblock = cd->nulldump+1; cd->nulldump = 0; Cwseek(cd, (vlong)cd->nextblock * Blocksize); goto Dofix; } /* * Write old null header block; this commits all our changes. */ if(cd->nulldump){ Cwseek(cd, (vlong)cd->nulldump * Blocksize); sprint(buf, "plan 9 dump cd\n"); sprint(buf+strlen(buf), "%s %lud %lud %lud %llud %lud %lud", dumpname, now, newnull, cblock, clength, iroot.block, iroot.length); if(cd->flags & CDjoliet) sprint(buf+strlen(buf), " %lud %lud", jroot.block, jroot.length); strcat(buf, "\n"); Cwrite(cd, buf, strlen(buf)); Cpadblock(cd); Cwflush(cd); } } fdtruncate(cd->fd, (vlong)cd->nextblock * Blocksize); exits(status); }
int upload(void) { /* Ändrad för nikfiles.data 960707 JÖ */ int area,ret,editret,dirnr; long tid; struct EditLine *el; FILE *fp; __aligned struct FileInfoBlock info; struct Fil *allokpek; char nikfilename[100],errbuff[100],filnamn[50],tmpfullname[100], outbuffer[81]; UBYTE tn; struct TransferFiles *tf; if(Servermem->cfg.ar.preup1) sendautorexx(Servermem->cfg.ar.preup1); if(area2==-1) { puttekn("\r\nI vilken area? ",-1); } else { sprintf(outbuffer,"\r\nI vilken area? (<RETURN> för %s)",Servermem->areor[area2].namn); puttekn(outbuffer,-1); } if(getstring(EKO,40,NULL)) return(1); if((area=parsearea(inmat))==-1) { puttekn("\n\rFinns ingen sådan area!\n\r",-1); return(0); } else if(area==-3) { if(area2==-1) return(0); area=area2; } if(!arearatt(area, inloggad, &Servermem->inne[nodnr])) { puttekn("\n\rFinns ingen sådan area!\n\r",-1); return(0); } if((Servermem->areor[area].flaggor & AREA_NOUPLOAD) && (Servermem->inne[nodnr].status < Servermem->cfg.st.laddaner)) { puttekn("\n\n\rDu har ingen rätt att ladda upp till den arean!\n\r",-1); return(0); } Servermem->action[nodnr] = UPLOAD; Servermem->varmote[nodnr] = area; Servermem->vilkastr[nodnr] = NULL; if(ret=recbinfile(Servermem->cfg.ultmp)) { while(tf=(struct TransferFiles *)RemHead((struct List *)&tf_list)) FreeMem(tf,sizeof(struct TransferFiles)); if(carrierdropped()) return(1); return(0); } /* printf("Filnamn = %s\n",FilePart(tf->Filnamn)); printf("Cps = %d\n\n",tf->cps); */ for(tf=(struct TransferFiles *)tf_list.mlh_Head; tf->node.mln_Succ; tf=(struct TransferFiles *)tf->node.mln_Succ) { strcpy(xprfilnamn,tf->Filnamn); if(stcgfn(filnamn,xprfilnamn)>40) puttekn("\r\nVARNING! Filnamnet större än 40 tecken!\r\n",-1); if(!filnamn[0]) { puttekn("\r\n\nHmm... Filen har inget namn. Skriv ett brev till sysop.\r\n",-1); continue; } if(!valnamn(filnamn,area,errbuff)) { for(;;) { puttekn(errbuff,-1); puttekn("\r\nNytt namn: ",-1); if(getstring(EKO,40,NULL)) { DeleteFile(xprfilnamn); return(1); } if(!inmat[0]) continue; if(valnamn(inmat,area,errbuff)) break; } strcpy(filnamn,inmat); sprintf(tmpfullname,"%s%s",Servermem->cfg.ultmp,filnamn); if(!Rename(xprfilnamn,tmpfullname)) { sprintf(outbuffer,"\r\n\nKunde inte döpa om filen från '%s'\r\ntill '%s'.\r\n",xprfilnamn,tmpfullname); puttekn(outbuffer,-1); DeleteFile(xprfilnamn); continue; } } else strcpy(tmpfullname,xprfilnamn); if(!(allokpek=(struct Fil *)AllocMem(sizeof(struct Fil),MEMF_PUBLIC | MEMF_CLEAR))) { puttekn("\r\n\nKunde inte allokera minne för filen!\r\n",-1); continue; } time(&tid); allokpek->tid=allokpek->validtime=tid; allokpek->uppladdare=inloggad; if(dfind(&info,tmpfullname,0)) { sprintf(outbuffer,"\r\nHittar inte filen %s!\r\n",tmpfullname); puttekn(outbuffer,-1); FreeMem(allokpek,sizeof(struct Fil)); continue; } allokpek->size=info.fib_Size; sprintf(outbuffer,"\r\n\r\nFilnamn: %s", filnamn); puttekn(outbuffer,-1); puttekn("\r\nVilken status ska behövas för att ladda ner filen? (0)",-1); if(getstring(EKO,3,NULL)) { FreeMem(allokpek,sizeof(struct Fil)); return(1); } allokpek->status=atoi(inmat); if(Servermem->inne[nodnr].status >= Servermem->cfg.st.filer) { puttekn("\n\rSka filen valideras? ",-1); if(jaellernej('j','n',1)) puttekn("Ja",-1); else { puttekn("Nej",-1); allokpek->flaggor|=FILE_NOTVALID; } puttekn("\n\rSka filen ha fri download? ",-1); if(jaellernej('j','n',2)) { puttekn("Ja",-1); allokpek->flaggor|=FILE_FREEDL; } else puttekn("Nej",-1); } else if(Servermem->cfg.cfgflags & NICFG_VALIDATEFILES) allokpek->flaggor|=FILE_NOTVALID; sendfile("NiKom:Texter/Nyckelhjälp.txt"); puttekn("\r\nVilka söknycklar ska filen ha? (? för att få en lista)\r\n",-1); if(editkey(allokpek->nycklar)) { FreeMem(allokpek,sizeof(struct Fil)); return(1); } puttekn("\r\nBeskrivning:\r\n",-1); if(getstring(EKO,70,NULL)) { FreeMem(allokpek,sizeof(struct Fil)); return(1); } strcpy(allokpek->beskr,inmat); dirnr = ChooseDirectoryInFileArea( area, allokpek->nycklar, allokpek->size); if(dirnr==-1) { puttekn("\r\n\nKunde inte hitta något lämpligt directory för filen!\r\n",-1); DeleteFile(tmpfullname); FreeMem(allokpek,sizeof(struct Fil)); continue; } allokpek->dir=dirnr; strcpy(allokpek->namn,filnamn); sprintf(inmat,"%s %s",tmpfullname,Servermem->areor[area].dir[dirnr]); argument=inmat; sendrexx(10); AddTail((struct List *)&Servermem->areor[area].ar_list,(struct Node *)allokpek); if(writefiles(area)) { puttekn("\r\n\nKunde inte skriva till datafilen\r\n",-1); } Servermem->inne[nodnr].upload++; Statstr.ul++; if(Servermem->cfg.logmask & LOG_UPLOAD) { LogEvent(USAGE_LOG, INFO, "%s laddar upp %s", getusername(inloggad), allokpek->namn); } if(Servermem->cfg.ar.postup1) sendautorexx(Servermem->cfg.ar.postup1); puttekn("\r\n\nVill du skriva en längre beskrivning? (J/n) ",-1); while((tn=gettekn())!='j' && tn!='J' && tn!='n' && tn!='N' && tn!=13); if(tn=='j' || tn=='J') { puttekn("\r\n\nOk, går in i editorn.\r\n",-1); if((editret=edittext(NULL))==1) return(1); else if(editret==2) continue; sprintf(nikfilename,"%slongdesc/%s.long",Servermem->areor[area].dir[dirnr],filnamn); if(!(fp=fopen(nikfilename,"w"))) { puttekn("\r\n\nKunde inte öppna longdesc-filen\r\n",-1); freeeditlist(); continue; } for(el=(struct EditLine *)edit_list.mlh_Head; el->line_node.mln_Succ; el=(struct EditLine *)el->line_node.mln_Succ) { if(fputs(el->text,fp)) { freeeditlist(); fclose(fp); continue; } fputc('\n',fp); } freeeditlist(); fclose(fp); puttekn("\r\n",-1); allokpek->flaggor|=FILE_LONGDESC; updatefile(area,allokpek); } } while(tf=(struct TransferFiles *)RemHead((struct List *)&tf_list)) FreeMem(tf,sizeof(struct TransferFiles)); return(0); }