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