[BACK]Return to rev.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / rev

Diff for /src/usr.bin/rev/rev.c between version 1.13 and 1.14

version 1.13, 2016/04/10 17:06:52 version 1.14, 2022/01/13 05:10:46
Line 46 
Line 46 
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         char *filename, *p = NULL, *t, *u;          char *filename, *p = NULL, *t, *te, *u;
         FILE *fp;          FILE *fp;
         ssize_t len;          ssize_t len;
         size_t ps = 0;          size_t ps = 0;
         int ch, rval;          int ch, multibyte, rval;
   
         setlocale(LC_CTYPE, "");          setlocale(LC_CTYPE, "");
           multibyte = MB_CUR_MAX > 1;
   
         if (pledge("stdio rpath", NULL) == -1)          if (pledge("stdio rpath", NULL) == -1)
                 err(1, "pledge");                  err(1, "pledge");
Line 83 
Line 84 
                         if (p[len - 1] == '\n')                          if (p[len - 1] == '\n')
                                 --len;                                  --len;
                         for (t = p + len - 1; t >= p; --t) {                          for (t = p + len - 1; t >= p; --t) {
                                 if (isu8cont(*t))                                  te = t;
                                         continue;                                  if (multibyte)
                                 u = t;                                          while (t > p && isu8cont(*t))
                                 do {                                                  --t;
                                         putchar(*u);                                  for (u = t; u <= te; ++u)
                                 } while (isu8cont(*(++u)));                                          if (putchar(*u) == EOF)
                                                   err(1, "stdout");
                         }                          }
                         putchar('\n');                          if (putchar('\n') == EOF)
                                   err(1, "stdout");
                 }                  }
                 if (ferror(fp)) {                  if (ferror(fp)) {
                         warn("%s", filename);                          warn("%s", filename);
Line 104 
Line 107 
 int  int
 isu8cont(unsigned char c)  isu8cont(unsigned char c)
 {  {
         return MB_CUR_MAX > 1 && (c & (0x80 | 0x40)) == 0x80;          return (c & (0x80 | 0x40)) == 0x80;
 }  }
   
 void  void

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14