David_Kassa

Untitled

Apr 23rd, 2016
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.58 KB | None | 0 0
  1. #include "utils.h"
  2. #include <string.h>
  3. #include <errno.h>
  4. #include <stdio.h>
  5. #include <unistd.h>
  6.  
  7.  
  8. static void print_w(const char *p) {
  9.     const char *q;
  10.     int saved_errno;
  11.  
  12.     if (!p) {
  13.         return;
  14.     }
  15.  
  16.     q = p;
  17.     while (*q) {
  18.         q++;
  19.     }
  20.  
  21.     if (q == p) {
  22.         return;
  23.     }
  24.  
  25.     saved_errno = errno;
  26.  
  27.     while (p < q) {
  28.         ssize_t n = write(STDERR_FILENO, p, (size_t) (q - p));
  29.         if (n > 0)
  30.             p += n;
  31.         else if (n != (ssize_t) -1 || errno != EINTR)
  32.             break;
  33.     }
  34.  
  35.     errno = saved_errno;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment