uint16 DosNetShareEnum(PCONN_HND phnd, uint16 sLevel, RCVBUF pbBuffer, RCVBUFLEN cbBuffer, ENTCOUNT * pcEntriesRead, uint16 *pcTotalAvail) { int i; *pcEntriesRead = 0; *pcTotalAvail = 0; DEBUG(10,("DosNetShareEnum: %d buf %d\n", sLevel, cbBuffer)); for (i = 0; i < lp_numservices(); i++) { DEBUG(10,("service %d [%s]\n", i, lp_servicename(i))); if (!lp_browseable(i) || !lp_snum_ok(i)) continue; (*pcTotalAvail)++; } for (i = 0; i < lp_numservices(); i++) { if (!lp_browseable(i) || !lp_snum_ok(i)) continue; switch (sLevel) { case 1: { SHARE_INFO_1 *sh1 = (SHARE_INFO_1*)pbBuffer; SHARE_INFO_1 *sh1_i; if (cbBuffer < sizeof(SHARE_INFO_1) * ((*pcEntriesRead)+1)) return ERRmoredata; sh1_i = &sh1[(*pcEntriesRead)]; fill_share_1(sh1_i, i); break; } default: { return ERRunknownlevel; } } (*pcEntriesRead)++; } return ERRsuccess; }
bool snum_is_shared_printer(int snum) { return (lp_browseable(snum) && lp_snum_ok(snum) && lp_printable(snum)); }