#include #include int fsize(FILE *sizefile) { int curpos,length; curpos=ftell(sizefile); fseek(sizefile,0L,SEEK_END); length=ftell(sizefile); fseek(sizefile, curpos, SEEK_SET); return length; } void strfix(char *str) { if((str[0]>=48)&&(str[0]<=57)) str[0]=0; for(int i=0;i<8;i++) { if((str[i]>=97)&&(str[i]<=122)) str[i]-=32; if((str[i]<48)||((str[i]>57)&&(str[i]<65))||(str[i]>90)) { for(;i<8;i++) str[i]=0; } } } void main(int argc, char* argv[]) { char filetitle[8]; char* newfilename; char* filecontenceptr=strdup("\x00"); char* ext; char* lastslash; FILE *readfile,*writefile; if((argc!=2)&&(argc!=3)&&(argc!=4)) printf("Usage: TxttoCal source (destination) (name)"); else { if (argc==2) { ext=strrchr(argv[1],'.')!=0 ? strrchr(argv[1],'.') : strrchr(argv[1],0); newfilename=strdup(""); strncat(newfilename,argv[1],ext-argv[1]); strcat(newfilename,".83p"); lastslash=strrchr(argv[1],'\\')!=0 ? strrchr(argv[1],'\\') : argv[1]-1; } if ((argc==3)||(argc==4)) { newfilename=strdup(argv[2]); if(argc==3) { ext=strrchr(newfilename,'.')!=0 ? strrchr(newfilename,'.') : strrchr(newfilename,0); lastslash=strrchr(newfilename,'\\')!=0 ? strrchr(newfilename,'\\') : newfilename-1; } else { ext=strrchr(argv[3],0); lastslash=argv[3]-1; } } if(strcmp(argv[1],newfilename)==0) { printf("Destination and source are the same!"); } else { if(ext-lastslash>9) { strncpy(filetitle,lastslash+1,8); } else { strncpy(filetitle,lastslash+1,ext-lastslash-1); filetitle[ext-lastslash-1]=0; } strfix(filetitle); if(filetitle[0]==0) { printf("Error generating file name!"); } else { readfile=fopen(argv[1],"rb"); if(!readfile) printf("\"%s\" is not found!",argv[1]); else { writefile=fopen(newfilename,"wb"); if(!writefile) printf("Error writing to \"%s\"!",newfilename); else { unsigned char* filecontence = NULL; int filesize=fsize(readfile); filecontence=new unsigned char[filesize+86]; memcpy(filecontence,"**TI83**\x1A\x0A\x00",11); memcpy(filecontence+11,"Qwerty Text Document\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",42); unsigned short num1=filesize+29; memcpy(filecontence+53,&num1,2); memcpy(filecontence+55,"\x0B\x00",2); num1=filesize+14; memcpy(filecontence+57,&num1,2); memcpy(filecontence+59,"\x06",1); memcpy(filecontence+60,filetitle,8); memcpy(filecontence+68,&num1,2); num1=filesize+12; memcpy(filecontence+70,&num1,2); memcpy(filecontence+72,"QWERTY Text\x00",12); fread(filecontence+84,filesize,1,readfile); num1=0; for(int i=55;i<=filesize+83;i++) num1+=filecontence[i]; memcpy(filecontence+84+filesize,&num1,2); fwrite(filecontence,filesize+86,1,writefile); delete filecontence; printf("Success! \"%s\" converted to \"%s\".",argv[1],newfilename); } } } } } }