6 #include <libsmbclient.h>
8 #define MAX_BUFF_SIZE 255
9 char g_workgroup
[MAX_BUFF_SIZE
];
10 char g_username
[MAX_BUFF_SIZE
];
11 char g_password
[MAX_BUFF_SIZE
];
12 char g_server
[MAX_BUFF_SIZE
];
13 char g_share
[MAX_BUFF_SIZE
];
16 static void auth_fn(const char *server
, const char *share
, char *workgroup
, int wgmaxlen
,
17 char *username
, int unmaxlen
, char *password
, int pwmaxlen
)
20 strncpy(workgroup
, g_workgroup
, wgmaxlen
- 1);
22 strncpy(username
, g_username
, unmaxlen
- 1);
24 strncpy(password
, g_password
, pwmaxlen
- 1);
26 strcpy(g_server
, server
);
27 strcpy(g_share
, share
);
31 int main(int argc
, char** argv
)
34 char url
[MAX_BUFF_SIZE
];
39 bzero(g_workgroup
,MAX_BUFF_SIZE
);
40 bzero(url
,MAX_BUFF_SIZE
);
45 user
= getenv("USER");
47 printf("no user??\n");
51 printf("username: %s\n", user
);
53 p
= strchr(user
, '\\');
55 printf("BAD username??\n");
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]));
64 err
= smbc_init(auth_fn
, 10);
66 printf("init smbclient context failed!!\n");
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
);
79 printf("stat failed!!\n");
83 printf("stat succeeded!!\n");