X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Freadlink.c;h=a851270e4f2152d4db418f2b0899f6ef7a3bfdda;hb=090a340dad3e79a3ccfa6954c779f5abf71f0f60;hp=4f023cebcbd178f556847c760b7c7d0e69e4f8bc;hpb=da691fd4bad5e187b307b7fd86bf5fd61e47c3fc;p=util-vserver.git diff --git a/util-vserver/src/readlink.c b/util-vserver/src/readlink.c index 4f023ce..a851270 100644 --- a/util-vserver/src/readlink.c +++ b/util-vserver/src/readlink.c @@ -1,7 +1,6 @@ // $Id$ // Copyright (C) 2003 Enrico Scholz -// based on readlink.cc by Jacques Gelinas // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -17,35 +16,65 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -/* - Copyright Jacques Gelinas jack@solucorp.qc.ca - Distributed under the Gnu Public License, see the License file - in this package. -*/ -#include +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "util.h" + #include #include #include #include +#include + +static void +showHelp(char const *cmd) +{ + WRITE_MSG(1, "Usage: "); + WRITE_STR(1, cmd); + WRITE_MSG(1, + " [--] \n" + "\n" + "Display value of a symbolic link on standard output.\n" + "\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + exit(0); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "readlink " VERSION " -- display value of symlink\n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2004 Enrico Scholz\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + int main (int argc, char *argv[]) { - int ret = -1; - if (argc != 2){ - fprintf (stderr,"readlink symlink-file\n"); - fprintf (stderr,"Prints the contents of a symlink\n"); - }else{ - char buf[PATH_MAX]; - int len = readlink (argv[1],buf,sizeof(buf)-1); - if (len > 0){ - buf[len] = '\0'; - printf ("%s\n",buf); - ret = 0; - }else{ - fprintf (stderr,"readlink failed for file %s (%s)\n" - ,argv[1],strerror(errno)); - } - } - return ret; + char buf[PATH_MAX + 2]; + int idx = 1; + int len; + + if (argc>=2) { + if (strcmp(argv[1], "--help") ==0) showHelp(argv[0]); + if (strcmp(argv[1], "--version")==0) showVersion(); + if (strcmp(argv[1], "--") ==0) ++idx; + } + if (argc