レポジトリ種類: Mercurial

#include "common.h"
#include "initpass.h"

void initpass(char *gpgid) {
  char *basedir = getbasedir(1);

  if (mkdir_r(basedir, 0755) != 0 && errno != EEXIST) {
    if (strncmp(lang, "en", 2) == 0)
      fprintf(stderr, "Failed to create directory.\n");
    else fprintf(stderr, "ディレクトリを作成に失敗。\n");
    return;
  }

  char gpgidpath[512];
  snprintf(gpgidpath, sizeof(gpgidpath), "%s/.gpg-id", basedir);

  struct stat statbuf;
  if (stat(gpgidpath, &statbuf) == 0) {
    if (strncmp(lang, "en", 2) == 0)
      fprintf(stderr, ".gpg-id file already exists.\n");
    else fprintf(stderr, ".gpg-idファイルは既に存在します。\n");
    return;
  }

  FILE *gpgidfile = fopen(gpgidpath, "w");
  if (gpgidfile == NULL) {
    if (strncmp(lang, "en", 2) == 0)
      fprintf(stderr, "Failed to write .gpg-id file.\n");
    else fprintf(stderr, ".gpg-idファイルを書き込めません。\n");
    return;
  }

  if (fprintf(gpgidfile, "%s\n", gpgid) < 0) {
    if (strncmp(lang, "en", 2) == 0)
      fprintf(stderr, "Failed to write .gpg-id file.\n");
    else fprintf(stderr, ".gpg-idファイルへの書き込みに失敗しました。\n");
    fclose(gpgidfile);
    return;
  }

  fclose(gpgidfile);

  if (strncmp(lang, "en", 2) == 0)
    puts("Initialization completed.");
  else puts("初期設定に完了しました。");
}