mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
482 lines
12 KiB
Plaintext
482 lines
12 KiB
Plaintext
$NetBSD: patch-ab,v 1.4 2015/03/18 13:21:36 joerg Exp $
|
||
|
||
--- nfsshell.c.orig 2015-03-18 00:18:15.000000000 +0000
|
||
+++ nfsshell.c
|
||
@@ -1,3 +1,4 @@
|
||
+/* URL: http://www.asmodeus.com/archive/Xnix/nfsShell */
|
||
/*
|
||
* Copyright, 1991, 1992, by Leendert van Doorn (leendert@cs.vu.nl)
|
||
*
|
||
@@ -10,6 +11,7 @@
|
||
/*
|
||
* nfs - A shell that provides access to NFS file systems
|
||
*/
|
||
+#include <stdlib.h>
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
#include <ctype.h>
|
||
@@ -21,14 +23,47 @@
|
||
#include <sys/ioctl.h>
|
||
#include <sys/socket.h>
|
||
#include <sys/vnode.h>
|
||
-#include <sys/vfs.h>
|
||
+/* #include <sys/vfs.h> *//*HF*/
|
||
#include <netinet/in.h>
|
||
#include <arpa/inet.h>
|
||
#include <sys/time.h>
|
||
-#include <ufs/inode.h>
|
||
+#include <ufs/ufs/dinode.h> /*HF: NetBSD*/
|
||
+/* #include <sys/fs/ufs_inode.h> *//*HF: Solaris*/
|
||
+#include <sys/filio.h>
|
||
#include "mount.h"
|
||
#include "nfs_prot.h"
|
||
|
||
+static void close_nfs(void);
|
||
+static void do_handle(int argc, char **argv);
|
||
+static void do_setid(int *var, int argc, char **argv);
|
||
+static void printfilestatus(char *name);
|
||
+static void do_cat(int argc, char **argv);
|
||
+static void do_chown(int argc, char **argv);
|
||
+static void do_chmod(int argc, char **argv);
|
||
+static void do_cd(int argc, char **argv);
|
||
+static void do_df(int argc, char **argv);
|
||
+static void do_dump(int argc, char **argv);
|
||
+static void do_export(int argc, char **argv);
|
||
+static void do_get(int argc, char **argv);
|
||
+static void do_help(int argc, char **argv);
|
||
+static void do_host(int argc, char **argv);
|
||
+static void do_ln(int argc, char **argv);
|
||
+static void do_ls(int argc, char **argv);
|
||
+static void do_mkdir(int argc, char **argv);
|
||
+static void do_mknod(int argc, char **argv);
|
||
+static void do_mount(int argc, char **argv);
|
||
+static void do_mv(int argc, char **argv);
|
||
+static void do_put(int argc, char **argv);
|
||
+static void do_rm(int argc, char **argv);
|
||
+static void do_rmdir(int argc, char **argv);
|
||
+static void do_status(int argc, char **argv);
|
||
+static void do_umount(int argc, char **argv);
|
||
+static void do_umountall(int argc, char **argv);
|
||
+int nfsbug_getline(char *buf, int bufsize, int *argc, char **argv, int argvsize);
|
||
+static AUTH * MYauthunix_create_default(int uid, int gid);
|
||
+static int determine_transfersize();
|
||
+
|
||
+
|
||
/*
|
||
* Fundamental constants
|
||
*/
|
||
@@ -128,13 +163,8 @@ jmp_buf intenv; /* where to go in inte
|
||
|
||
fhstatus *pmap_mnt();
|
||
|
||
-char *malloc();
|
||
-char *calloc();
|
||
-char *realloc();
|
||
char *strsave();
|
||
-char *strchr();
|
||
char *nfs_error();
|
||
-char *getenv();
|
||
void interrupt();
|
||
|
||
main(argc, argv)
|
||
@@ -164,7 +194,7 @@ main(argc, argv)
|
||
|
||
/* interpreter's main command loop */
|
||
if (setjmp(intenv)) putchar('\n');
|
||
- while (getline(buffer, BUFSIZ, &argcount, argvec, NARGVEC)) {
|
||
+ while (nfsbug_getline(buffer, BUFSIZ, &argcount, argvec, NARGVEC)) {
|
||
if (argcount == 0) continue;
|
||
if ((cmd = command(argvec[0])) == CMD_QUIT)
|
||
break;
|
||
@@ -277,15 +307,18 @@ interrupt()
|
||
* it up into an argument vector.
|
||
*/
|
||
int
|
||
-getline(buf, bufsize, argc, argv, argvsize)
|
||
+nfsbug_getline(buf, bufsize, argc, argv, argvsize)
|
||
char *buf, **argv;
|
||
int bufsize, *argc, argvsize;
|
||
{
|
||
register char *p;
|
||
|
||
if (interact) printf("nfs> ");
|
||
- if (fgets(buf, bufsize, stdin) == NULL)
|
||
+ if (fgets(buf, bufsize, stdin) == NULL){
|
||
+ perror("fgets");
|
||
+ fprintf(stderr,"EOF?!\n");
|
||
return 0;
|
||
+ }
|
||
*argc = 0;
|
||
for (p = buf; *p == ' ' || *p == '\t'; p++)
|
||
/* skip white spaces */;
|
||
@@ -320,9 +353,7 @@ command(cmd)
|
||
* Set remote host and initialize RPC channel
|
||
* to mount daemon.
|
||
*/
|
||
-do_host(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_host(int argc, char **argv)
|
||
{
|
||
if (argc != 2)
|
||
fprintf(stderr, "Usage: host <host>\n");
|
||
@@ -333,23 +364,19 @@ do_host(argc, argv)
|
||
/*
|
||
* Set user or group id (updating RPC authentication info)
|
||
*/
|
||
-do_setid(var, argc, argv)
|
||
- int *var, argc;
|
||
- char **argv;
|
||
+static void do_setid(int *var, int argc, char **argv)
|
||
{
|
||
*var = argc == 2 ? atoi(argv[1]) : -2;
|
||
if (nfsclient && nfsclient->cl_auth) {
|
||
auth_destroy(nfsclient->cl_auth);
|
||
- nfsclient->cl_auth = authunix_create_default(uid, gid);
|
||
+ nfsclient->cl_auth = MYauthunix_create_default(uid, gid);
|
||
}
|
||
}
|
||
|
||
/*
|
||
* Change remote working directory
|
||
*/
|
||
-do_cd(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_cd(int argc, char **argv)
|
||
{
|
||
register char *p;
|
||
char *component;
|
||
@@ -421,9 +448,7 @@ do_lcd(argc, argv)
|
||
/*
|
||
* Display a remote file
|
||
*/
|
||
-do_cat(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_cat(int argc, char **argv)
|
||
{
|
||
diropargs dargs;
|
||
diropres *dres;
|
||
@@ -476,9 +501,7 @@ do_cat(argc, argv)
|
||
/*
|
||
* List remote directory
|
||
*/
|
||
-do_ls(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_ls(int argc, char **argv)
|
||
{
|
||
char **table, **ptr, **p;
|
||
int lflag = 0;
|
||
@@ -509,8 +532,7 @@ do_ls(argc, argv)
|
||
/*
|
||
* Print long listing of a files, much in the way ``ls -l'' does
|
||
*/
|
||
-printfilestatus(name)
|
||
- char *name;
|
||
+void printfilestatus(char *name)
|
||
{
|
||
diropargs args;
|
||
diropres *res;
|
||
@@ -615,9 +637,7 @@ writefiledate(d)
|
||
/*
|
||
* Get remote files
|
||
*/
|
||
-do_get(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_get(int argc, char **argv)
|
||
{
|
||
char **table, **ptr, **p;
|
||
char answer[512];
|
||
@@ -698,9 +718,7 @@ do_get(argc, argv)
|
||
* Show file system information
|
||
*/
|
||
/* ARGUSED */
|
||
-do_df(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_df(int argc, char **argv)
|
||
{
|
||
statfsres *res;
|
||
|
||
@@ -734,9 +752,7 @@ do_df(argc, argv)
|
||
/*
|
||
* Delete a remote file
|
||
*/
|
||
-do_rm(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_rm(int argc, char **argv)
|
||
{
|
||
diropargs args;
|
||
nfsstat *res;
|
||
@@ -764,9 +780,7 @@ do_rm(argc, argv)
|
||
/*
|
||
* Link a file
|
||
*/
|
||
-do_ln(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_ln(int argc, char **argv)
|
||
{
|
||
diropargs dargs;
|
||
linkargs largs;
|
||
@@ -810,9 +824,7 @@ do_ln(argc, argv)
|
||
/*
|
||
* Move a file or directory
|
||
*/
|
||
-do_mv(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_mv(int argc, char **argv)
|
||
{
|
||
renameargs args;
|
||
nfsstat *res;
|
||
@@ -842,9 +854,7 @@ do_mv(argc, argv)
|
||
/*
|
||
* Make remote directory
|
||
*/
|
||
-do_mkdir(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_mkdir(int argc, char **argv)
|
||
{
|
||
createargs args;
|
||
diropres *res;
|
||
@@ -882,9 +892,7 @@ do_mkdir(argc, argv)
|
||
/*
|
||
* Remove remote directory
|
||
*/
|
||
-do_rmdir(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_rmdir(int argc, char **argv)
|
||
{
|
||
diropargs args;
|
||
nfsstat *res;
|
||
@@ -913,9 +921,7 @@ do_rmdir(argc, argv)
|
||
/*
|
||
* Change mode of remote file or directory
|
||
*/
|
||
-do_chmod(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_chmod(int argc, char **argv)
|
||
{
|
||
sattrargs aargs;
|
||
diropargs dargs;
|
||
@@ -970,9 +976,7 @@ do_chmod(argc, argv)
|
||
/*
|
||
* Change owner (and group) of remote file or directory
|
||
*/
|
||
-do_chown(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_chown(int argc, char **argv)
|
||
{
|
||
sattrargs aargs;
|
||
diropargs dargs;
|
||
@@ -1030,9 +1034,7 @@ do_chown(argc, argv)
|
||
/*
|
||
* Put file from local to remote
|
||
*/
|
||
-do_put(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_put(int argc, char **argv)
|
||
{
|
||
createargs cargs;
|
||
diropargs dargs;
|
||
@@ -1122,9 +1124,7 @@ do_put(argc, argv)
|
||
/*
|
||
* Get/set file handle
|
||
*/
|
||
-do_handle(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_handle(int argc, char **argv)
|
||
{
|
||
register char *p;
|
||
register int i;
|
||
@@ -1157,10 +1157,10 @@ do_handle(argc, argv)
|
||
if ((nfsclient = clntudp_create(&nfsserver_addr, NFS_PROGRAM,
|
||
NFS_VERSION, timeout, &sock)) == NULL) {
|
||
clnt_pcreateerror("nfs clntudp_create");
|
||
- return 0;
|
||
+ return;
|
||
}
|
||
clnt_control(nfsclient, CLSET_TIMEOUT, &timeout);
|
||
- nfsclient->cl_auth = authunix_create_default(uid, gid);
|
||
+ nfsclient->cl_auth = MYauthunix_create_default(uid, gid);
|
||
|
||
/* provide some generic name for it */
|
||
if ((mountpath = malloc(8 + 1)) == NULL) {
|
||
@@ -1183,9 +1183,7 @@ do_handle(argc, argv)
|
||
/*
|
||
* Create a character device
|
||
*/
|
||
-do_mknod(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_mknod(int argc, char **argv)
|
||
|
||
{
|
||
createargs cargs;
|
||
@@ -1235,7 +1233,7 @@ do_mroot(var, argc, argv)
|
||
*var = 0x00100000;
|
||
if (nfsclient && nfsclient->cl_auth) {
|
||
auth_destroy(nfsclient->cl_auth);
|
||
- nfsclient->cl_auth = authunix_create_default(uid, gid);
|
||
+ nfsclient->cl_auth = MYauthunix_create_default(uid, gid);
|
||
}
|
||
/*
|
||
* Put in some type of code here
|
||
@@ -1272,9 +1270,7 @@ xtoa(s)
|
||
* Set up a channel to the NFS server and
|
||
* mount remote file system.
|
||
*/
|
||
-do_mount(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_mount(int argc, char **argv)
|
||
{
|
||
char *host, *path;
|
||
int umount = 0, portmap = 0;
|
||
@@ -1313,9 +1309,7 @@ do_mount(argc, argv)
|
||
* RPC channel.
|
||
*/
|
||
/* ARGUSED */
|
||
-do_umount(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_umount(int argc, char **argv)
|
||
{
|
||
if (argc != 1) {
|
||
fprintf(stderr, "Usage: umount\n");
|
||
@@ -1331,9 +1325,7 @@ do_umount(argc, argv)
|
||
* Unmount all remote file system from this host
|
||
*/
|
||
/* ARGUSED */
|
||
-do_umountall(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_umountall(int argc, char **argv)
|
||
{
|
||
if (argc != 1) {
|
||
fprintf(stderr, "Usage: umountall\n");
|
||
@@ -1351,9 +1343,7 @@ do_umountall(argc, argv)
|
||
* Display all exported file systems on remote system
|
||
*/
|
||
/* ARGUSED */
|
||
-do_export(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_export(int argc, char **argv)
|
||
{
|
||
exports ex, *exp;
|
||
groups gr;
|
||
@@ -1389,9 +1379,7 @@ do_export(argc, argv)
|
||
* Display all remote mounted file systems
|
||
*/
|
||
/* ARGUSED */
|
||
-do_dump(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_dump(int argc, char **argv)
|
||
{
|
||
mountlist ml, *mlp;
|
||
|
||
@@ -1415,9 +1403,7 @@ do_dump(argc, argv)
|
||
* Generic status report
|
||
*/
|
||
/* ARGUSED */
|
||
-do_status(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_status(int argc, char **argv)
|
||
{
|
||
if (argc != 1) {
|
||
fprintf(stderr, "Usage: status\n");
|
||
@@ -1436,9 +1422,7 @@ do_status(argc, argv)
|
||
* Simple on-line help facility
|
||
*/
|
||
/* ARGUSED */
|
||
-do_help(argc, argv)
|
||
- int argc;
|
||
- char **argv;
|
||
+void do_help(int argc, char **argv)
|
||
{
|
||
register int i;
|
||
|
||
@@ -1493,7 +1477,7 @@ open_mount(host)
|
||
return 0;
|
||
}
|
||
clnt_control(mntclient, CLSET_TIMEOUT, &timeout);
|
||
- mntclient->cl_auth = authunix_create_default(0, 0);
|
||
+ mntclient->cl_auth = MYauthunix_create_default(0, 0);
|
||
if (verbose)
|
||
printf("Open %s (%s)\n",
|
||
remotehost, inet_ntoa(server_addr.sin_addr));
|
||
@@ -1540,7 +1524,7 @@ open_nfs(path, umount, portmap)
|
||
return 0;
|
||
}
|
||
clnt_control(nfsclient, CLSET_TIMEOUT, &timeout);
|
||
- nfsclient->cl_auth = authunix_create_default(uid, gid);
|
||
+ nfsclient->cl_auth = MYauthunix_create_default(uid, gid);
|
||
|
||
/*
|
||
* Get file handle for this path from the mount daemon. There
|
||
@@ -1634,7 +1618,7 @@ privileged()
|
||
return RPC_ANYSOCK;
|
||
for (;;) {
|
||
sin.sin_port = htons((u_short)lport);
|
||
- if (bind(s, (caddr_t)&sin, sizeof (sin), 0) >= 0) {
|
||
+ if (bind(s, (caddr_t)&sin, sizeof (sin)/*, 0*//*HF*/) >= 0) {
|
||
(void)ioctl(s, FIONBIO, (char *) &dontblock);
|
||
if (verbose)
|
||
fprintf(stderr, "Using a privileged port (%d)\n", lport);
|
||
@@ -1654,7 +1638,7 @@ privileged()
|
||
/*
|
||
* Close an NFS mounted file system
|
||
*/
|
||
-close_nfs()
|
||
+void close_nfs(void)
|
||
{
|
||
if (mountpath == NULL) return;
|
||
if (verbose) printf("Unmount `%s'\n", mountpath);
|
||
@@ -1672,14 +1656,13 @@ close_nfs()
|
||
* syscalls.
|
||
*/
|
||
AUTH *
|
||
-authunix_create_default(uid, gid)
|
||
- int uid, gid;
|
||
+MYauthunix_create_default(int uid, int gid)
|
||
{
|
||
char machname[MAX_MACHINE_NAME + 1];
|
||
int gids[1];
|
||
|
||
if (gethostname(machname, MAX_MACHINE_NAME) == -1) {
|
||
- fprintf(stderr, "authunix_create_default: cannot get hostname\n");
|
||
+ fprintf(stderr, "MYauthunix_create_default: cannot get hostname\n");
|
||
exit(1);
|
||
}
|
||
machname[MAX_MACHINE_NAME] = 0;
|
||
@@ -1858,8 +1841,7 @@ umatchpattern(s, p)
|
||
* NFS errors
|
||
*/
|
||
char *
|
||
-nfs_error(nfsstat)
|
||
- enum nfsstat nfsstat;
|
||
+nfs_error(enum nfsstat nfsstat)
|
||
{
|
||
switch (nfsstat) {
|
||
case NFS_OK:
|
||
@@ -1903,4 +1885,3 @@ nfs_error(nfsstat)
|
||
}
|
||
}
|
||
|
||
-
|
||
\ No newline at end of file
|