#define _XOPEN_SOURCE 700 #include #include #include #include #define E(x) { x, #x } static const struct { int ec; char *name; } errs[] = { E(ENOENT), E(ENOTDIR), E(ENAMETOOLONG), E(ELOOP), E(EACCES), E(0) }; int main(int argc, char *argv[]) { while (*++argv) { char *s = realpath(*argv, (char[PATH_MAX]){""}); //char *s = realpath(*argv, 0); if (!s) { int i; for (i=0; errs[i].ec && errs[i].ec!=errno; i++); s = errs[i].name; } puts(s); } }