- if ((argc - optind) == 2) {
- spec = argv[optind];
- name = argv[optind + 1];
- } else
- Usage(argc, argv);
- if (getnfsargs(spec, nfsargsp)) {
- if (mount(MOUNT_NFS, name, flags, nfsargsp))
- exit(1);
- if (nfsargsp->flags & (NFSMNT_NQNFS | NFSMNT_KERB)) {
- if ((opflags & ISBGRND) == 0) {
- if (i = fork()) {
- if (i == -1) {
- perror("nqnfs");
- exit(1);
- }
- exit(0);
- }
- (void) setsid();
- (void) close(0);
- (void) close(1);
- (void) close(2);
- (void) chdir("/");
+
+ if ((argc - optind) != 2)
+ usage();
+
+ spec = argv[optind];
+ name = argv[optind + 1];
+
+ if (!getnfsargs(spec, nfsargsp))
+ exit(1);
+ if (stat(name, &sb) < 0)
+ err("%s: %s", name, strerror(errno));
+ if (!S_ISDIR(sb.st_mode))
+ err("%s: not a directory", name);
+ if (mount(MOUNT_NFS, name, flags, nfsargsp))
+ err("mount: %s: %s\n", name, strerror(errno));
+ if (nfsargsp->flags & (NFSMNT_NQNFS | NFSMNT_KERB)) {
+ if ((opflags & ISBGRND) == 0) {
+ if (i = fork()) {
+ if (i == -1)
+ err("nqnfs 1: %s\n", strerror(errno));
+ exit(0);
+ }
+ (void) setsid();
+ (void) close(STDIN_FILENO);
+ (void) close(STDOUT_FILENO);
+ (void) close(STDERR_FILENO);
+ (void) chdir("/");
+ }
+ openlog("mount_nfs:", LOG_PID, LOG_DAEMON);
+ nfssvc_flag = NFSSVC_MNTD;
+ ncd.ncd_dirp = name;
+ while (nfssvc(nfssvc_flag, (caddr_t)&ncd) < 0) {
+ if (errno != ENEEDAUTH) {
+ syslog(LOG_ERR, "nfssvc err %m");
+ continue;