#include<stdio.h>
#include<ctype.h>

short vanz=0;

main(argc,argv)           /* Kopieren mit Zeilennummern */
int argc; char **argv;
{   void putline();
    char zf[512]; 
    char **argp,*opt,*getline();
    short nanz=0; 
    int znr=0; 

    argp=argv;
    fprintf(stderr,"Filekopieren mit Zeilennr. (-n) (-v)\n\n");
    while(--argc>0 && (*++argp)[0]== '-'){
        for (opt=argp[0]+1;*opt!='\0';opt++){
             switch(*opt){
                 case 'n' : nanz++; break;
                 case 'v' : vanz++; break;
                 default: 
                 fprintf(stderr,"%s bad argument \n",argp[0]);
                 exit(1);
             }
         }
    }
    while(getline(zf)!=NULL){
         if (nanz){ 
              printf("%6d  ",++znr); 
         }
         putline(zf);
    }
}

char *getline(z)
char *z;
{   
    int c; 
    char *pz; 

    pz=z;
    while((c=getchar())!=EOF){
         if ((*pz++=c)=='\n')
              break;
    }
    if (c==EOF&&pz==z) return(NULL); 
    *pz='\0'; 
    return(pz);
}
void putline(z)
char *z;
{   
    int c;

    while(c=*z++){
         if (vanz&&isprint(c)==0) printf("\\%#o",c);
         else putchar (c);
    }
    if (vanz) putchar ('\n');
}
