#include #define TRUE 1 #define FALSE 0 struct FAJL { struct FAJL *next; struct FAJL *prev; char line[255]; }; int main(int *argc, char *argv[]) { int i,j; char arg[255],filename[255],line[255]; int desc=FALSE,version=FALSE,verbose=TRUE; FILE *file; struct FAJL *fajl, *first, *tmp; fajl=(struct FAJL*)malloc(sizeof(struct FAJL)); first=fajl; tmp=(struct FAJL*)malloc(sizeof(struct FAJL)); if((int)argc==1) print_usage(); for(i=1 ; i<(int)argc ; i++) { strcpy(arg,argv[i]); if (arg[0]=='-') { for(j=1 ; jline,line); fajl->next=(struct FAJL*)malloc(sizeof(struct FAJL)); fajl->next->prev=fajl; fajl=fajl->next; } fclose(file); fajl=first; i=0; while(1) { tmp=fajl; while(1) { if(strcmp(tmp->line,fajl->line) > 0) { strcpy(line,tmp->line); strcpy(tmp->line,fajl->line); strcpy(fajl->line,line); } if(fajl->next != NULL) fajl=fajl->next; else break; } if(tmp->next!=NULL) fajl=tmp->next; else break; } if(!desc) { fajl=first; while(1) { printf("%s",fajl->line); if(fajl->next != NULL) fajl=fajl->next; else break; } } if(desc) { while(fajl->next != NULL) fajl=fajl->next; while(1) { printf("%s",fajl->line); if(fajl->prev != NULL) fajl=fajl->prev; else break; } } while(fajl->next != NULL) fajl=fajl->next; while(1) { if(fajl->prev==NULL) break; else { fajl=fajl->prev; free(fajl->next); } } } else { printf("File %s not found!\n",filename); exit(10); } } int print_usage(int h) { puts("fsort v2.0 by Per Wigren"); if(h) { puts("Usage: fsort [-vhqd] filename"); puts(" -v print versionnumber and quit"); puts(" -h print this help and quit"); puts(" -q don\'t print header"); puts(" -d sort descending"); } exit(5); }