uuprog

annotate pwd.c @ 0:4f628556fa3e

uuprog initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 25 Aug 2011 08:53:01 +0300
parents
children
rev   line source
nuclear@0 1 /*! gcc -std=c89 -pedantic -Wall -o pwd pwd.c */
nuclear@0 2 #include <stdio.h>
nuclear@0 3 #include <stdlib.h>
nuclear@0 4 #include <string.h>
nuclear@0 5 #include <errno.h>
nuclear@0 6 #include <unistd.h>
nuclear@0 7
nuclear@0 8 int main(void)
nuclear@0 9 {
nuclear@0 10 char *tmp, *wdbuf;
nuclear@0 11 size_t bufsz = 64;
nuclear@0 12
nuclear@0 13 if(!(wdbuf = malloc(bufsz))) {
nuclear@0 14 perror("malloc failed");
nuclear@0 15 return 1;
nuclear@0 16 }
nuclear@0 17
nuclear@0 18 while(!(tmp = getcwd(wdbuf, bufsz)) && errno == ERANGE) {
nuclear@0 19 size_t newsz = bufsz ? bufsz * 2 : 2;
nuclear@0 20
nuclear@0 21 if(!(tmp = realloc(wdbuf, newsz))) {
nuclear@0 22 fprintf(stderr, "failed to allocate: %u bytes: %s\n", (unsigned int)newsz, strerror(errno));
nuclear@0 23 free(wdbuf);
nuclear@0 24 return 1;
nuclear@0 25 }
nuclear@0 26 wdbuf = tmp;
nuclear@0 27 bufsz = newsz;
nuclear@0 28 }
nuclear@0 29
nuclear@0 30 if(!tmp) {
nuclear@0 31 perror("getcwd failed");
nuclear@0 32 free(wdbuf);
nuclear@0 33 return 1;
nuclear@0 34 }
nuclear@0 35
nuclear@0 36 puts(wdbuf);
nuclear@0 37 free(wdbuf);
nuclear@0 38 return 0;
nuclear@0 39 }