summaryrefslogtreecommitdiffstats
path: root/contrib/smbfs/smbutil/smbutil.c
diff options
context:
space:
mode:
authorsheldonh <sheldonh@FreeBSD.org>2001-12-14 11:06:03 +0000
committersheldonh <sheldonh@FreeBSD.org>2001-12-14 11:06:03 +0000
commit4e260b134ff188548ec2c8a16a37570a4abf1257 (patch)
tree672d7786f89ed3b67f221098cb86cf0bc53ad5e3 /contrib/smbfs/smbutil/smbutil.c
downloadFreeBSD-src-4e260b134ff188548ec2c8a16a37570a4abf1257.zip
FreeBSD-src-4e260b134ff188548ec2c8a16a37570a4abf1257.tar.gz
Import smbfs-1.4.1.
This is Boris Popov's SMB/CIFS file system implementation for FreeBSD. Obtained from: Boris Popov via ftp://ftp.butya.kz/pub/smbfs/
Diffstat (limited to 'contrib/smbfs/smbutil/smbutil.c')
-rw-r--r--contrib/smbfs/smbutil/smbutil.c155
1 files changed, 155 insertions, 0 deletions
diff --git a/contrib/smbfs/smbutil/smbutil.c b/contrib/smbfs/smbutil/smbutil.c
new file mode 100644
index 0000000..d66003f
--- /dev/null
+++ b/contrib/smbfs/smbutil/smbutil.c
@@ -0,0 +1,155 @@
+#include <sys/param.h>
+#include <sys/time.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <err.h>
+#include <sysexits.h>
+
+#include <netsmb/smb_lib.h>
+#include <netsmb/smb_conn.h>
+
+#include "common.h"
+
+extern char *__progname;
+
+static void help(void);
+static void help_usage(void);
+static int cmd_crypt(int argc, char *argv[]);
+static int cmd_help(int argc, char *argv[]);
+
+int verbose;
+
+typedef int cmd_fn_t (int argc, char *argv[]);
+typedef void cmd_usage_t (void);
+
+#define CMDFL_NO_KMOD 0x0001
+
+static struct commands {
+ const char * name;
+ cmd_fn_t* fn;
+ cmd_usage_t * usage;
+ int flags;
+} commands[] = {
+ {"crypt", cmd_crypt, NULL, CMDFL_NO_KMOD},
+ {"help", cmd_help, help_usage, CMDFL_NO_KMOD},
+ {"lc", cmd_dumptree, NULL},
+ {"login", cmd_login, login_usage},
+ {"logout", cmd_logout, logout_usage},
+ {"lookup", cmd_lookup, lookup_usage, CMDFL_NO_KMOD},
+ {"print", cmd_print, print_usage},
+ {"view", cmd_view, view_usage},
+ {NULL, NULL}
+};
+
+static struct commands *
+lookupcmd(const char *name)
+{
+ struct commands *cmd;
+
+ for (cmd = commands; cmd->name; cmd++) {
+ if (strcmp(cmd->name, name) == 0)
+ return cmd;
+ }
+ return NULL;
+}
+
+int
+cmd_crypt(int argc, char *argv[])
+{
+ char *cp, *psw;
+
+ if (argc < 2)
+ psw = getpass("Password:");
+ else
+ psw = argv[1];
+ cp = malloc(strlen(psw + 4));
+ if (cp == NULL)
+ errx(EX_DATAERR, "out of memory");
+ smb_simplecrypt(cp, psw);
+ printf("%s\n", cp);
+ free(cp);
+ exit(0);
+}
+
+int
+cmd_help(int argc, char *argv[])
+{
+ struct commands *cmd;
+ char *cp;
+
+ if (argc < 2)
+ help_usage();
+ cp = argv[1];
+ cmd = lookupcmd(cp);
+ if (cmd == NULL)
+ errx(EX_DATAERR, "unknown command %s", cp);
+ if (cmd->usage == NULL)
+ errx(EX_DATAERR, "no specific help for command %s", cp);
+ cmd->usage();
+ exit(0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct commands *cmd;
+ char *cp;
+ int opt;
+
+ if (argc < 2)
+ help();
+
+ while ((opt = getopt(argc, argv, "hv")) != EOF) {
+ switch (opt) {
+ case 'h':
+ help();
+ /*NOTREACHED */
+ case 'v':
+ verbose = 1;
+ break;
+ default:
+ warnx("invalid option %c", opt);
+ help();
+ /*NOTREACHED */
+ }
+ }
+ if (optind >= argc)
+ help();
+
+ cp = argv[optind];
+ cmd = lookupcmd(cp);
+ if (cmd == NULL)
+ errx(EX_DATAERR, "unknown command %s", cp);
+
+ if ((cmd->flags & CMDFL_NO_KMOD) == 0 && smb_lib_init() != 0)
+ exit(1);
+
+ argc -= optind;
+ argv += optind;
+ optind = optreset = 1;
+ return cmd->fn(argc, argv);
+}
+
+static void
+help(void) {
+ printf("\n");
+ printf("usage: %s [-hv] command [args]\n", __progname);
+ printf("where commands are:\n"
+ " crypt [password] slightly encrypt password\n"
+ " help command display help on \"command\"\n"
+ " lc display active connections\n"
+ " login //user@host[/share] login to the specified host\n"
+ " logout //user@host[/share] logout from the specified host\n"
+ " print //user@host/share file print file to the specified remote printer\n"
+ " view //user@host list resources on the specified host\n"
+ "\n");
+ exit(1);
+}
+
+static void
+help_usage(void) {
+ printf("usage: smbutil help command\n");
+ exit(1);
+}
OpenPOWER on IntegriCloud