33 using namespace SGCTP;
44 void CPrincipal::reset()
48 ui8tPayloadType_set.clear();
51 void CPrincipal::erasePassword()
56 void CPrincipal::setPassword(
const char *_pcPassword )
58 uint8_t __ui8tPasswordLength =
60 ? strlen( _pcPassword )
62 memcpy( pcPassword, _pcPassword, __ui8tPasswordLength );
63 pcPassword[__ui8tPasswordLength] =
'\0';
66 void CPrincipal::addPayloadType( uint8_t _ui8tPayloadType )
68 ui8tPayloadType_set.insert( _ui8tPayloadType );
75 bool CPrincipal::hasPayloadTypes()
const
77 return !ui8tPayloadType_set.empty();
80 bool CPrincipal::hasPayloadType( uint8_t _ui8tPayloadType )
const
83 ui8tPayloadType_set.find( _ui8tPayloadType )
84 != ui8tPayloadType_set.end();
91 int CPrincipal::read(
const char *_pcPrincipalsPath, uint64_t _ui64tID )
96 FILE *__pFILE = fopen( _pcPrincipalsPath,
"r" );
101 char *__pcBuffer = NULL, *__pcDelim1, *__pcDelim2, *__pcDelim3;
107 __ssizeLine = getline( &__pcBuffer, &__sizeBuffer, __pFILE );
108 if( __ssizeLine < 0 )
112 *strchrnul( __pcBuffer,
'\r' ) =
'\0';
113 *strchrnul( __pcBuffer,
'\n' ) =
'\0';
116 *strchrnul( __pcBuffer,
'#' ) =
'\0';
117 *strchrnul( __pcBuffer,
' ' ) =
'\0';
123 __pcDelim1 = strchr( __pcBuffer,
':' );
124 if( __pcDelim1 == NULL )
126 if( __pcDelim1 - __pcBuffer > 20 )
129 unsigned long long int __ullID =
130 strtoull( __pcBuffer, &__pcFieldEnd, 10 );
131 if( *__pcFieldEnd !=
'\0' )
133 if( __ullID != _ui64tID )
138 __pcDelim2 = strchr( __pcDelim1+1,
':' );
139 if( __pcDelim2 == NULL )
144 strcpy( pcPassword, __pcDelim1+1 );
147 __pcDelim3 = __pcDelim2+1;
148 while( *__pcDelim3 !=
'\0' )
150 if( *__pcDelim3 ==
',' )
152 unsigned long int __ulPayloadType =
153 strtoul( __pcDelim3, &__pcDelim3, 10 );
154 if( *__pcDelim3 !=
',' && *__pcDelim3 !=
'\0' )
156 if( __ulPayloadType > CTransmit::PAYLOAD_UNDEFINED )
158 ui8tPayloadType_set.insert( __ulPayloadType );
165 memset( __pcBuffer,
'\0', __sizeBuffer );
172 ( ui64tID == 0 && _ui64tID != 0 )
#define SGCTP_MAX_PASSWORD_LENGTH
#define SGCTP_MAX_PASSWORD_SIZE