home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / ux_dos.zip / UNIX_DOS.C next >
C/C++ Source or Header  |  1996-01-08  |  2KB  |  63 lines

  1. /*unix_dos -[u|d][input]
  2.  * -u  changes \n\r into \n
  3.  * -d  changes \n   into \n\r
  4.  */
  5. /*Last modified by boris@innonyc.com
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <dos.h>
  11.  
  12. void main(int argc, char ** argv)
  13. {
  14. FILE *in, *out;    int cur_arg=1;    char dest[256];    char buf[80];
  15.  struct find_t ffblk; int c,ii,unix_to_dos, done=1;char file_name[256]="";
  16.  
  17. if(((argc>1)&&strcmp(argv[1],"-u")&&strcmp(argv[1],"-d"))||(argc==1)) {
  18. printf("Program converts text files from DOS to UNIX and reverse\n\
  19. To use type %s -[u|d] <file names>\n\
  20. -u indicates input text files are UNIX type, -d DOS (\\n\\r)\n\
  21. Wild card are SUPPORTED\n"
  22. ,argv[0]);
  23. exit(1);
  24. }
  25. unix_to_dos=strcmp(argv[1],"-d");argc--;argv++;
  26. if(argc==1)exit(0);
  27. do{
  28.     /* optional input arg */
  29.  
  30.          if(done){/*first attempt to decode the argument*/
  31.          done =_dos_findfirst(argv[cur_arg],_A_NORMAL|_A_HIDDEN|
  32.          _A_RDONLY|_A_SYSTEM|_A_ARCH,&ffblk);          ii=strlen(argv[cur_arg]);
  33.           while((ii>=0)&&(argv[cur_arg][ii]!='\\'))ii--;
  34.           ii++;
  35.          }
  36.          strncpy(file_name,argv[cur_arg],ii);file_name[ii]=0;
  37.          strcat(file_name,ffblk.name);
  38.          if ((in = fopen(file_name, "rb")) == NULL) {
  39.         perror(file_name);
  40.         exit(1);
  41.          }
  42.         out = fopen("t023489d.tmp", "wb");
  43.         if (out == NULL) {
  44.         perror("t023489d.tmp");
  45.         exit(1);
  46.         }
  47.     /* search for header line */
  48.     while((c=fgetc(in))!=EOF){
  49.          if((c!='\n')&&(c!='\r')){fputc(c,out);continue;}
  50.          if(c=='\r')continue;    fputc(c,out);
  51.          if(unix_to_dos) {fputc('\r',out);continue;}
  52.       }
  53.  
  54.     fclose(out); fclose(in);
  55.     remove(file_name);
  56.     rename("t023489d.tmp",file_name);
  57.     done = _dos_findnext(&ffblk);
  58.  
  59.     if (done!=0){cur_arg++;}
  60.   }while(cur_arg<argc);
  61. }
  62.  
  63.