X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Freadlink.c;h=adbd46fbd6556b7fe1628ed0bf5521d718b475b9;hb=95e2774070e989fe9cf9f48dae5fa054e55e2a3e;hp=77c8314f0d62931b1cd508e5bf990eb77b074a8c;hpb=06e1018272502e1d15d6d8f32b80fa96420785b8;p=util-vserver.git diff --git a/src/readlink.c b/src/readlink.c index 77c8314..adbd46f 100644 --- a/src/readlink.c +++ b/src/readlink.c @@ -1,7 +1,6 @@ -// $Id: readlink.c,v 1.1 2003/09/29 22:01:57 ensc Exp $ +// $Id: readlink.c 1980 2005-03-24 12:44:17Z ensc $ // 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