summaryrefslogtreecommitdiff
path: root/examples/libsmbclient/smbwrapper/smbsh.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/libsmbclient/smbwrapper/smbsh.c')
-rw-r--r--examples/libsmbclient/smbwrapper/smbsh.c162
1 files changed, 0 insertions, 162 deletions
diff --git a/examples/libsmbclient/smbwrapper/smbsh.c b/examples/libsmbclient/smbwrapper/smbsh.c
deleted file mode 100644
index f2b5bf49fb..0000000000
--- a/examples/libsmbclient/smbwrapper/smbsh.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 2.0
- SMB wrapper functions - frontend
- Copyright (C) Andrew Tridgell 1998
- Copyright (C) Derrell Lipman 2003-2005
-
- 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
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <limits.h>
-#include <string.h>
-#include <libsmbclient.h>
-#include "bsd-strlfunc.h"
-
-#ifndef FALSE
-# define FALSE (0)
-# define TRUE (! FALSE)
-#endif
-
-static void smbsh_usage(void)
-{
- printf("smbsh [options] [command [args] ...]\n\n");
- printf(" -p prepend library name\n");
- printf(" -a append library name\n");
- printf(" -n");
- printf(" -W workgroup\n");
- printf(" -U username\n");
- printf(" -P prefix\n");
- printf(" -R resolve order\n");
- printf(" -d debug level\n");
- printf(" -l logfile\n");
- printf(" -L libdir\n");
- exit(0);
-}
-
-int main(int argc, char *argv[])
-{
- char *p, *u;
- char *libd = ".";
- char line[PATH_MAX], pre[PATH_MAX], post[PATH_MAX];
- int opt;
- int no_ask = 0;
- struct stat statbuf;
- extern char *optarg;
- extern int optind;
-
- *pre = *post = '\0';
-
- while ((opt = getopt(argc, argv, "p:a:d:nL:W:U:h")) != -1) {
- switch (opt) {
- case 'p': /* prepend library before smbwrapper.so */
- if (*pre != '\0')
- smbw_strlcat(pre, " ", sizeof(pre));
- smbw_strlcat(pre, optarg, sizeof(pre));
- break;
-
- case 'a': /* append library after smbwrapper.so */
- smbw_strlcat(post, " ", sizeof(post));
- smbw_strlcat(post, optarg, sizeof(post));
- break;
-
- case 'd':
- setenv("DEBUG", optarg, TRUE);
- break;
-
- case 'n': /* don't ask for username/password */
- no_ask++;
- break;
-
- case 'L':
- libd = optarg;
- break;
-
- case 'W':
- setenv("WORKGROUP", optarg, TRUE);
- break;
-
- case 'U':
- p = strchr(optarg,'%');
- if (p) {
- *p=0;
- setenv("PASSWORD", p+1, TRUE);
- }
- setenv("USER", optarg, TRUE);
- break;
-
- case 'h':
- default:
- smbsh_usage();
- }
- }
-
-
- if (! no_ask) {
- if (!getenv("USER")) {
- printf("Username: ");
- u = fgets(line, sizeof(line)-1, stdin);
- setenv("USER", u, TRUE);
- }
-
- if (!getenv("PASSWORD")) {
- p = getpass("Password: ");
- setenv("PASSWORD", p, TRUE);
- }
- }
-
- smbw_strlcpy(line, pre, PATH_MAX - strlen(line));
- smbw_strlcat(line, " ", sizeof(line));
- smbw_strlcat(line, libd, sizeof(line));
- smbw_strlcat(line, "/smbwrapper.so", sizeof(line));
- smbw_strlcat(line, post, sizeof(line));
- setenv("LD_PRELOAD", line, TRUE);
- setenv("LD_BIND_NOW", "true", TRUE);
-
- snprintf(line,sizeof(line)-1,"%s/smbwrapper.32.so", libd);
-
- if (stat(line, &statbuf) == 0 && S_ISREG(statbuf.st_mode)) {
- snprintf(line, sizeof(line)-1,
- "%s/smbwrapper.32.so:DEFAULT", libd);
- setenv("_RLD_LIST", line, TRUE);
- snprintf(line, sizeof(line)-1,
- "%s/smbwrapper.so:DEFAULT", libd);
- setenv("_RLDN32_LIST", line, TRUE);
- } else {
- snprintf(line,sizeof(line)-1,"%s/smbwrapper.so:DEFAULT", libd);
- setenv("_RLD_LIST", line, TRUE);
- }
-
- if (optind < argc) {
- execvp(argv[optind], &argv[optind]);
- } else {
- char *shellpath = getenv("SHELL");
-
- setenv("PS1", "smbsh$ ", TRUE);
-
- if(shellpath) {
- execl(shellpath,"smbsh", NULL);
- } else {
- setenv("SHELL", "/bin/sh", TRUE);
- execl("/bin/sh", "smbsh", NULL);
- }
- }
- printf("launch failed!\n");
- return 1;
-}