Guest User

Untitled

a guest
Nov 23rd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. int getpwuid_r(uid_t uid, struct passwd *pwd, char *buffer,
  2. size_t bufsize, struct passwd **result);
  3.  
  4. long int initlen = sysconf(_SC_GETPW_R_SIZE_MAX);
  5. size_t len;
  6. if (initlen == −1)
  7. /* Default initial length. */
  8. len = 1024;
  9. else
  10. len = (size_t) initlen;
  11. struct passwd result;
  12. struct passwd *resultp;
  13. char *buffer = malloc(len);
  14. if (buffer == NULL)
  15. ...handle error...
  16. int e;
  17. while ((e = getpwuid_r(42, &result, buffer, len, &resultp)) == ERANGE)
  18. {
  19. size_t newlen = 2 * len;
  20. if (newlen < len)
  21. ...handle error...
  22. len = newlen;
  23. char *newbuffer = realloc(buffer, len);
  24. if (newbuffer == NULL)
  25. ...handle error...
  26. buffer = newbuffer;
  27. }
  28. if (e != 0)
  29. ...handle error...
  30. free (buffer);
Add Comment
Please, Sign In to add comment