#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LINE_SIZE 300
#define MAX_LINES 100
#define YES 1
#define NO 0
void sort(int);
int read_line(FILE *);
void write_line(FILE *,int);
int mycomp(const char *,const char *);
void usage(void);
void cant(char *);
char line[MAX_LINES][LINE_SIZE];
int r_flag=NO;
main(int argc,char **argv)
{
FILE *fp;
char *s;
int n;
while(--argc>0&& **++argv=='-'){
for (s=*argv+1;*s!='\0';s++){
switch(*s){
case'r':
r_flag=YES;
break;
default:
usage();
}
}
}
n=0;
if(argc==0){
n=read_line(stdin);
sort(n);
write_line(stdout,n);
}
else{
while(argc--){
if((fp=fopen(*argv,"r"))==NULL)
cant(*argv);
n+=read_line(fp);
fclose(fp);
argv++;
}
sort(n);
write_line(stdout,n);
}
return(0);
}
int read_line(FILE *fp)
{
char tmp[LINE_SIZE];
int n;
for (n=0;fgets(tmp,LINE_SIZE,fp)!=NULL;n++){
if(n<MAX_LINES)
strcpy(line[n],tmp);
else{
fptintf(stderr,"too much line\n");
exit(1);
}
}
return(n);
}
void write_line(FILE *fp,int n)
{
int i;
for(i=0;i<n;i++)
fputs(line[i],fp);
}
void sort(int n)
{
qsort(line,n,LINE_SIZE,mycomp);
}
int mycomp(const char *a,const char *b)
{
if (r_flag==NO)
return(strcmp(a,b));
else
return(strcmp(b,a));
}
void usage(void)
{
fprintf(stderr,"Usage:sort2[file...]\n");
exit(1);
}