int GetAuthorization(const char *login, const char *password) { // printf("incoming login [%s], password [%s]\n", login, password); const char *auth_names[4]; int adm_level=0; auth_names[0]="view"; auth_names[1]="paycheck"; auth_names[2]="control"; auth_names[3]="admin"; sem_wait(&users_lock); for (int i=0; i<4; i++) { const char *tmp=NULL; if ((tmp=users.GetValue(login,auth_names[i]))!=NULL) { char md5_inc[1024]; if (CreateMD5HexSign(password, md5_inc, 1023)==0) { if (strcmp(tmp, md5_inc)==0) adm_level=i+1; } } } sem_post(&users_lock); // printf("returning %i\n", adm_level); return adm_level; }