- 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<idx+1)
+ WRITE_MSG(2, "No filename specified; use '--help' for more information\n");
+ else if ((len=readlink(argv[idx], buf, sizeof(buf)-2))==-1)
+ PERROR_Q("readlink: readlink", argv[idx]);
+ else {
+ buf[len++] = '\n';
+ Vwrite(1, buf, len);
+ return EXIT_SUCCESS;
+ }
+
+ return EXIT_FAILURE;