home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bslash.zip / bslash.c next >
C/C++ Source or Header  |  2000-02-23  |  1KB  |  49 lines

  1. #define VERSION "bslash 0.00\tCopyright (c) 2000, NBG01720@nifty.ne.jp"
  2.  
  3. /* To compile:
  4.  *    gcc -Zomf -O2 -Wall bslash.c
  5.  */
  6. #include <sys/nls.h>
  7. #include <getopt.h>
  8. #include <stdio.h>
  9.  
  10. int main(int argc,char**argv){
  11.   int textmode=0,c;
  12.   FILE*in=stdin,*out=stdout;
  13.   char*name=NULL;
  14.   for(optind=0;(c=getopt(argc,argv,"to:V"))!=-1;)
  15.     switch(c){
  16.       case't':    textmode=1;    break;
  17.       case'o':    name=optarg;    break;
  18.       case'V':    puts(VERSION);    return 0;
  19.       default:    puts(VERSION"\n\nUsage: bslash  [-t] [-o outfile] [infile]");
  20.         return 0;
  21.     }
  22.  
  23.   if(name){
  24.     if(!(out=fopen(name,textmode?"wt":"wb"))){
  25.       perror(name);
  26.       return 1;
  27.     }
  28.   }else
  29.     if(!textmode)
  30.       _fsetmode(stdout,"b");
  31.  
  32.   if(argv[optind])
  33.     if(!(in=fopen(argv[optind],"rt"))){
  34.       perror(argv[optind]);
  35.       return 1;
  36.     }
  37.  
  38.   while((c=getc(in))!=EOF){
  39.     putc(c,out);
  40.     if(_nls_is_dbcs_lead(c))
  41.       switch(c=getc(in)){
  42.     case'\\': fputs("\\\\",out); break;
  43.     case EOF: return 0;
  44.     default:  putc(c,out);
  45.       }
  46.   }
  47.   return 0;
  48. }
  49.