PyObject *Vcf_readFile( PyObject *self, PyObject *args ){ FILE *file; char *filename; VcStatus status; if(!PyArg_ParseTuple( args, "s", &filename ) ){ return NULL; } else{ cardNum = 0; file = fopen(filename,"r"); if(file == NULL){ char *error = strerror(errno); return Py_BuildValue("s", error); } status = readVcFile(file,&vcfile); if(status.code != OK){ freeVcFile(&vcfile); return Py_BuildValue("iii",status.code,status.linefrom,status.lineto); } fclose(file); return Py_BuildValue("s","OK"); } }
static PyObject *Vcf_readFile( PyObject *self, PyObject *args ){ char *filename; VcStatus result; FILE * fptr; // VcFile nfile; if(!PyArg_ParseTuple( args, "s", &filename )){ return NULL; } fptr = fopen(filename, "r"); if(fptr == NULL){ char * errmsg = strerror(errno); char msg[25+strlen(errmsg)]; sprintf(msg, "Cannot open file due to %s", errmsg); return PyBytes_FromString(msg); } result = readVcFile(fptr, &gfile); return generateError(result); }//end of readVcFile wrapper function
int main(int argc, char**argv){ if (argc == 1){ fprintf(stderr,"You must enter atleast 1 command.\n"); return EXIT_FAILURE; } /*Read in file from STDIN*/ int write = 0; VcStatus writeStatus, readStatus; VcFile input; readStatus = readVcFile(stdin,&input); if (readStatus.code != OK){ fprintf(stderr,"Read Vcfile failed with error code %d lines %d to %d.\n",readStatus.code,readStatus.linefrom,readStatus.lineto); return EXIT_FAILURE; } /*Run the sepcified command*/ if (argc > 1){ if (strcmpML("-info",argv[1]) == 0){ if (argc > 2) return EXIT_FAILURE; vcfInfo(stdout,&input); } else if (strcmpML("-sort",argv[1]) == 0){ if (argc > 2) return EXIT_FAILURE; vcfSort(&input); writeStatus = writeVcFile(stdout,&input); write = 1; } else if (strcmpML("-canon",argv[1]) == 0){ if (argc > 2) return EXIT_FAILURE; vcfCanon(&input); writeStatus = writeVcFile(stdout,&input); write = 1; } else if (strcmpML("-select",argv[1]) == 0){ if (argc < 3){ fprintf(stderr,"ERROR: You must enter which cards to select.\n"); } else{ char * which = strdup(argv[2]); assert(which); int check = scanWhich(which); if (check == -1){ fprintf(stderr,"ERROR: Invalid format for selection."); } else{ vcfSelect(&input,which); writeStatus = writeVcFile(stdout,&input); write = 1; } free(which); } } else{ fprintf(stderr,"ERROR: Invalid options.\n"); freeVcFile(&input); return EXIT_FAILURE; } } /*Print the error*/ if ((write == 1) && writeStatus.code == IOERR){ fprintf(stderr,"IOERR on linefrom: %d. to lineto: %d.\n",writeStatus.linefrom,writeStatus.lineto); } /*Free and return*/ freeVcFile(&input); return EXIT_SUCCESS; }