Example #1
0
status_t
GIDToName(void* buffer)
{
	gid_t groupId = *reinterpret_cast<gid_t*>(buffer);

	const char* name = NULL;

	struct group* groupInfo = getgrgid(groupId);
	if (groupInfo != NULL) {
		name = groupInfo->gr_name;
		name = AddDomain(name);
	}

	status_t result;

	if (name != NULL) {
		result = write_port(gReplyPort, MsgReply, name, strlen(name) + 1);
		free(const_cast<char*>(name));
	} else {
		result = write_port(gReplyPort, MsgReply, kNogroupName,
			strlen(kNogroupName) + 1);
	}

	return result;
}
Example #2
0
status_t
UIDToName(void* buffer)
{
	uid_t userId = *reinterpret_cast<uid_t*>(buffer);

	const char* name = NULL;

	struct passwd* userInfo = getpwuid(userId);
	if (userInfo != NULL) {
		name = userInfo->pw_name;
		name = AddDomain(name);
	}

	status_t result;

	if (name != NULL) {
		result = write_port(gReplyPort, MsgReply, name, strlen(name) + 1);
		free(const_cast<char*>(name));
	} else {
		result = write_port(gReplyPort, MsgReply, kNobodyName,
			strlen(kNobodyName) + 1);
	}

	return result;
}
Example #3
0
int CDomainContainer::AddDomain( LPCTSTR lpszDomainName )
{
	if( NULL == lpszDomainName || strlen(lpszDomainName) <=0  )
		return -1;
	CDomain	newdomain;
	newdomain.m_strName	=	lpszDomainName;
	return AddDomain( newdomain );
}
Example #4
0
BOOL CDomainContainer::Load( LPCTSTR lpszFileName )
{
	if( NULL == lpszFileName || strlen(lpszFileName) <= 0 )
		return FALSE;

	BOOL	bOK	=	FALSE;
	CSPFile file;
	
	if( file.Open( lpszFileName, CSPFile::modeRead ) )
	{
		DWORD dwLen = file.GetLength();
		if( 0 == dwLen || dwLen > SF_MAX_DOMAINFILE_LENGTH )
		{
			file.Close();
			return FALSE;
		}

		SetSize( 0, min(dwLen / 300, 20) );

		CDomain	domain;
		CSPString	rString;
		while( file.ReadString( rString ) )
		{
			int	nIndex	=	rString.Find( "\r" );
			if( -1 == nIndex )
				nIndex	=	rString.Find( "\n" );
			if( -1 != nIndex )
				rString	=	rString.Left( nIndex );
			rString.TrimLeft();
			rString.TrimRight();

			if( rString.GetLength() > 0 )
			{
				if( domain.m_strName.IsEmpty() )	// 新版块名称
					domain.m_strName	=	rString;
				else
					domain.AddStock( rString );
			}
			else
			{	// 版块结束
				if( !domain.m_strName.IsEmpty() )
					AddDomain( domain );
				domain.m_strName.Empty();
				domain.RemoveAll();
			}
		}
		if( !domain.m_strName.IsEmpty() )
			Add( domain );
		domain.m_strName.Empty();
		domain.RemoveAll();

		file.Close();
		bOK	=	TRUE;
	}

	return bOK;
}
//=============================================================================*
void BAR_DomainList::ParseDomainList(char* pszText, const DWORD dwSize)
//=============================================================================*
{
    //=== build a new domain list
    m_vecDomainNames.clear();

    if ( pszText == NULL )
        return;

    char szTokenBuf[1024];
    szTokenBuf[0] = '\0';

    //=== scan contents of list file
    DWORD dwLineStart = 0;
    int iLines = 0;
    char chSep = ';';
    bool bLookForSep = true;

    //=== loop over bytes
    for(DWORD i = 0; i < dwSize; i++)
    {
        //=== end of line: now look for separator
        if ( pszText[i] == '\n' )
        {
            dwLineStart = i + 1;
            bLookForSep = true;
        }
        //=== separator: extract domain name and go to next line
        else if ( bLookForSep && pszText[i] == chSep )
        {
            size_t sizeToken = i - dwLineStart;
            strncpy(szTokenBuf, &pszText[dwLineStart], sizeToken);
            szTokenBuf[sizeToken] = '\0';
            AddDomain(szTokenBuf);
            bLookForSep = false;
        }
    }

    return;
}