uuprog

view 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
line source
1 /*! gcc -std=c89 -pedantic -Wall -o pwd pwd.c */
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <errno.h>
6 #include <unistd.h>
8 int main(void)
9 {
10 char *tmp, *wdbuf;
11 size_t bufsz = 64;
13 if(!(wdbuf = malloc(bufsz))) {
14 perror("malloc failed");
15 return 1;
16 }
18 while(!(tmp = getcwd(wdbuf, bufsz)) && errno == ERANGE) {
19 size_t newsz = bufsz ? bufsz * 2 : 2;
21 if(!(tmp = realloc(wdbuf, newsz))) {
22 fprintf(stderr, "failed to allocate: %u bytes: %s\n", (unsigned int)newsz, strerror(errno));
23 free(wdbuf);
24 return 1;
25 }
26 wdbuf = tmp;
27 bufsz = newsz;
28 }
30 if(!tmp) {
31 perror("getcwd failed");
32 free(wdbuf);
33 return 1;
34 }
36 puts(wdbuf);
37 free(wdbuf);
38 return 0;
39 }