xref: /plan9/sys/src/cmd/aquarela/testconnect.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1 #include "headers.h"
2 
3 void
threadmain(int argc,char * argv[])4 threadmain(int argc, char *argv[])
5 {
6 	SmbClient *c;
7 	char *errmsg;
8 	if (argc != 2 && argc != 3) {
9 		print("usage: testconnect to [share]\n");
10 		exits("args");
11 	}
12 	smbglobalsguess(1);
13 	errmsg = nil;
14 	c = smbconnect(argv[1], argc == 3 ? argv[2] : nil, &errmsg);
15 	if (c) {
16 		int i, rv;
17 		int entries;
18 		SmbRapServerInfo1 *si = nil;
19 		SmbFindFileBothDirectoryInfo ip[10];
20 		char *errmsg;
21 		ushort sid, searchcount, endofsearch;
22 		errmsg = nil;
23 		rv = smbnetserverenum2(c, SV_TYPE_SERVER, "PLAN9", &entries, &si, &errmsg);
24 		if (rv < 0)
25 			print("error: %s\n", errmsg);
26 		else if (rv > 0)
27 			print("error code %d\n", rv);
28 		else
29 			for (i = 0; i < entries; i++)
30 				print("%s: %d.%d 0x%.8lux %s\n", si[i].name, si[i].vmaj, si[i].vmin, si[i].type, si[i].remark);
31 		free(si);
32 		if (rv == 0) {
33 			rv = smbnetserverenum2(c, SV_TYPE_DOMAIN_ENUM, nil, &entries, &si, &errmsg);
34 			if (rv < 0)
35 				print("error: %s\n", errmsg);
36 			else if (rv > 0)
37 				print("error code %d\n", rv);
38 			else
39 				for (i = 0; i < entries; i++)
40 					print("%s: %d.%d 0x%.8lux %s\n", si[i].name, si[i].vmaj, si[i].vmin, si[i].type, si[i].remark);
41 			free(si);
42 		}
43 		rv = smbclienttrans2findfirst2(c, nelem(ip), "\\LICENSE",
44 			&sid, &searchcount, &endofsearch, ip, &errmsg);
45 		if (rv) {
46 			print("sid 0x%.4ux\n", sid);
47 			print("searchcount 0x%.4ux\n", searchcount);
48 			print("endofsearch 0x%.4ux\n", endofsearch);
49 		}
50 		else
51 			print("search failed %s\n", errmsg);
52 		smbclientfree(c);
53 	}
54 	else
55 		print("failed to connect: %s\n", errmsg);
56 }
57