void threadmain(int argc, char **argv) { NbName from, to; char *e = nil; int netbios = 0; ARGBEGIN { case 'u': smbglobals.unicode = strtol(ARGF(), 0, 0) != 0; break; case 'p': smbglobals.log.print = 1; break; case 'd': logset(ARGF()); break; case 'w': smbglobals.primarydomain = ARGF(); break; case 'n': netbios = 1; break; default: usage(); } ARGEND; smbglobalsguess(0); smblistencifs(cifsaccept); if (netbios) { nbinit(); nbmknamefromstring(from, "*"); nbmknamefromstring(to, "*smbserver\\x20"); nbsslisten(to, from, nbssaccept, nil); nbmknamefromstringandtype(to, smbglobals.serverinfo.name, 0x20); nbsslisten(to, from, nbssaccept, nil); } smblogprint(-1, "Aquarela %d.%d running\n", smbglobals.serverinfo.vmaj, smbglobals.serverinfo.vmin); for (;;) { if (netbios&& !smbbrowsesendhostannouncement(smbglobals.serverinfo.name, 60 * 1000, SV_TYPE_SERVER, smbglobals.serverinfo.remark, &e)) { smblogprint(-1, "hostannounce failed: %s\n", e); } if (sleep(60 * 1000) < 0) break; } }
void nbmknamefromstringandtype(NbName nbname, char *s, uchar type) { nbmknamefromstring(nbname, s); nbname[NbNameLen - 1] = type; }