int spas_load_credential()

in libs/signature/src/spas_client.c [230:273]


int spas_load_credential(char *path, CREDENTIAL_UPDATE_MODE mode) {
  int ret = SPAS_NO_ERROR;
  SPAS_CREDENTIAL credential;

  if (g_loaded) {
    return SPAS_NO_ERROR;
  }
  if (path == NULL) {
    path = getenv(SPAS_CREDENTIAL_ENV);
    if (path == NULL) {
      return ERROR_NO_CREDENTIAL;
    }
  }
  strncpy(g_path, path, SPAS_MAX_PATH - 1);
  ret = _load_credential(&credential, path);
  if (ret != SPAS_NO_ERROR) {
    return ret;
  }
#ifdef SPAS_MT
  pthread_mutex_lock(&cred_mutex);
#endif
  if (!g_loaded) {
    memcpy(&g_credential, &credential, sizeof(SPAS_CREDENTIAL));
    g_loaded = 1;
  }
#ifdef SPAS_MT
  pthread_mutex_unlock(&cred_mutex);
#endif
  switch (mode) {
    case UPDATE_BY_ALARM:
      ret = _update_credential_by_alarm();
      break;
#ifdef SPAS_MT
    case UPDATE_BY_THREAD:
      ret = _update_credential_by_thread();
      break;
#endif
    case NO_UPDATE:
    default:
      ret = SPAS_NO_ERROR;
      break;
  }
  return ret;
}