• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/testsuite/libsmbclient/src/stat/
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <errno.h>
5#include <unistd.h>
6#include <libsmbclient.h>
7
8#define	MAX_BUFF_SIZE	255
9char g_workgroup[MAX_BUFF_SIZE];
10char g_username[MAX_BUFF_SIZE];
11char g_password[MAX_BUFF_SIZE];
12char g_server[MAX_BUFF_SIZE];
13char g_share[MAX_BUFF_SIZE];
14
15
16void auth_fn(const char *server, const char *share, char *workgroup, int wgmaxlen,
17		char *username, int unmaxlen, char *password, int pwmaxlen)
18{
19
20	strncpy(workgroup, g_workgroup, wgmaxlen - 1);
21
22	strncpy(username, g_username, unmaxlen - 1);
23
24	strncpy(password, g_password, pwmaxlen - 1);
25
26	strcpy(g_server, server);
27	strcpy(g_share, share);
28
29}
30
31int main(int argc, char** argv)
32{
33	int err = -1;
34	char url[MAX_BUFF_SIZE];
35	struct stat st;
36	char *user;
37	SMBCCTX *ctx;
38
39	bzero(g_workgroup,MAX_BUFF_SIZE);
40	bzero(url,MAX_BUFF_SIZE);
41
42	if ( argc == 2)
43	{
44		char *p;
45		user = getenv("USER");
46		if (!user) {
47			printf("no user??\n");
48			return 0;
49		}
50
51		printf("username: %s\n", user);
52
53		p = strchr(user, '\\');
54		if (! p) {
55			printf("BAD username??\n");
56			return 0;
57		}
58		strncpy(g_workgroup, user, strlen(user));
59		g_workgroup[p - user] = 0;
60		strncpy(g_username, p + 1, strlen(p + 1));
61		memset(g_password, 0, sizeof(char) * MAX_BUFF_SIZE);
62		strncpy(url,argv[1],strlen(argv[1]));
63
64		err = smbc_init(auth_fn, 10);
65		if (err) {
66			printf("init smbclient context failed!!\n");
67			return err;
68		}
69		/* Using null context actually get the old context. */
70		ctx = smbc_set_context(NULL);
71		smbc_setOptionUseKerberos(ctx, 1);
72		smbc_setOptionFallbackAfterKerberos(ctx, 1);
73		smbc_setWorkgroup(ctx, g_workgroup);
74		smbc_setUser(ctx, g_username);
75		err = smbc_stat(url, &st);
76
77		if ( err < 0 ) {
78			err = 1;
79			printf("stat failed!!\n");
80		}
81		else {
82			err = 0;
83			printf("stat succeeded!!\n");
84		}
85
86
87	}
88
89	return err;
90
91}
92