Exemple #1
0
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;
}
Exemple #2
0
bool snum_is_shared_printer(int snum)
{
	return (lp_browseable(snum) && lp_snum_ok(snum) && lp_printable(snum));
}