THE COMMON MODULE W/ ERROR HANDLING AND FILE HANDLING
///////////////////////////////////////////////////////// #include <stdlib.h> #include <stdio.h> #include <string.h> FILE *output,*output2,*fopen(); ///////////////ERROR MESSAGES////////////////////////// char *error[] = { "Could not open file!", "Syntax error!", "Failed to open communication!" }; ///////////////ERROR HANDLER////////////////////////// int errhd(int errorcode) { ///////check which error///////// --errorcode; printf("%s\n",error[errorcode]); return(0); } ///////////////OPENFILE////////////////////////////// int OpenFile(char *filename,char *mode) { unsigned register int result; /////////open file,if error return message/ if (!(output2=fopen(filename,mode))) { errhd(1); result=1; } else { result=0; } return(result); } //////////////CLOSE FILE//////////////////////////// int CloseFile() { fclose(output2); return(0); } //////////////OPEN COMMUNICATION//////////////////// int OpenPort(char *mode) { unsigned register int result; /////////open port,if error return message/ if (!(output=fopen("com2:",mode))) { errhd(3); result=1; } else { result=0; } return(result); } /////////////CLOSE COMMUNICATION//////////////////// ClosePort() { fclose(output); return(0); }
THE MAIN MODULE
////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// ///////////////////// SEND/RCV V0.9 MODULE OF AMIConnect //////////////////////// ///////////////////////// BY HENRIK STOLPE /////////////////////////// ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// #include <stdlib.h> #include <stdio.h> #include <string.h> #include <common.c> ////////////////DEFINES & CONSTANTS//////////////////// #define MAXBYTES 100000 FILE *output,*output2,*fopen(); ///////////////GET SIZE OF FILE//////////////////////// GetSize() { char bcount[MAXBYTES]; unsigned register int bytes; bytes=fread(bcount, sizeof(char), MAXBYTES, output2); rewind(output2); return(bytes); } /////////MASKOUT FILENAME////////////////////////// char *MakeName(char *infilename) { char filename[64]; int c=92; char *filenm=strrchr(infilename,c); strcpy(filename,filenm+1); return(filename); } /////////SEND FILENAME//////////////////////////// SendName(char *filename) { unsigned register int result; unsigned register int len=strlen(filename); result=fwrite(filename, sizeof(char),len,output); rewind(output); return(0); } //////////////START COMMUNICATION/////////////////// int PutData() { unsigned register int result,res; unsigned register int size=GetSize(); char list[MAXBYTES]; printf("CONNECTION ESTABLISHED\n"); printf("BYTES TO TRANSFER: %d\n",GetSize()); printf("TRANSFER INITIATED\n"); res=fread(list, sizeof(char), size, output2); result=fwrite(list, sizeof(char),size,output); return(result); } ////////////MAIN CONTROL ///////////////////////////// int main(int argc,char *argv[1]) { int filestat,comstat=0; char *filename; filename=argv[1]; printf("AMIconnect SEND V0.9 By Henrik Stolpe\n"); //////////////////CHECK SYNTAX//////////////////////// if (!(argc==2)) { errhd(2); } ///////////////////OPEN ALL/////////////////////////// filestat=OpenFile(filename,"rb"); comstat=OpenPort("wb"); ////////////////////CONNECT/////////////////////////// if (filestat == 0 && comstat == 0) { SendName(MakeName(filename)); printf("%d BYTES TRANSFERED\n",PutData()); } ///////////////////CLOSE ALL/////////////////////////// if (filestat==0) { CloseFile(); } if (comstat==0) { ClosePort(); } return(0); }