/* * recenteditor.c * * A programmers editor * * Author: Dario Rodriguez dario@softhome.net * This program is licensed under the terms of GNU GPL v2.1+ */ #include #include #include #include #include #include "recenteditor_data.h" typedef struct re_t { redata_t *redata; int flag_newfile; char filename[PATH_MAX]; } re_t; re_t *re_init(void); void re_free(re_t *re); int re_setfilename(re_t *re, char *filename); int main(int argc, char *argv[]) { re_t *re; if(argc!=2 || strcmp(argv[argc-1],"--help")==0) { fprintf(stderr,"Syntax: %s filename\n",argv[0]); return(1); } if((re=re_init())==NULL) { fprintf(stderr,"ERROR: couldn't init structs.\n"); return(2); } if(re_setfilename(re,argv[argc-1])!=0) { fprintf(stderr,"ERROR: filename too long.\n"); re_free(re),re=NULL; return(2); } if((redata_load(re->redata,re->filename,0))!=0) re->flag_newfile=1; else re->flag_newfile=0; #warning TESTS { char buf[129]; redata_hash(re->redata,buf); fprintf(stderr,"%s %s\n",buf,re->filename); } #warning TODO re_free(re),re=NULL; return(0); } re_t * re_init(void) { re_t *re; if((re=malloc(sizeof(re_t)))==NULL) return(NULL); /* insuf. mem. */ memset(re,0,sizeof(re_t)); if((re->redata=redata_init())==NULL) { re_free(re),re=NULL; return(NULL); /* insuf. mem. */ } return(re); } void re_free(re_t *re) { if(re==NULL) return; /* all done */ if(re->redata!=NULL) redata_free(re->redata),re->redata=NULL; free(re),re=NULL; return; } int re_setfilename(re_t *re, char *filename) { if(re==NULL || filename==NULL) return(-1); strncpy(re->filename,filename,sizeof(re->filename)); re->filename[sizeof(re->filename)-1]='\0'; if(strcmp(filename,re->filename)!=0) return(-1); /* filename too long */ return(0); }