Logo Search packages:      
Sourcecode: pan version File versions  Download package

bool pan::file::ensure_dir_exists ( const StringView path )

If the specified directory doesn't exist, Pan tries to create it.

true if the directory already existed or was created; false otherwise

Definition at line 110 of file file-util.cc.

References pan_strerror().

Referenced by get_pan_home().

  assert (!dirname_sv.empty());

  pan_return_val_if_fail (!dirname_sv.empty(), true);
  bool retval (true);

  const std::string dirname (dirname_sv.to_string());
  if (!g_file_test (dirname.c_str(), G_FILE_TEST_IS_DIR))
    retval = !g_mkdir_with_parents (dirname.c_str(), 0755);
    const char * in = dirname.c_str();
    char * buf = g_new (char, dirname.size()+1);
    char * out = buf;

    *out++ = *in++;
    for (;;)
      if (*in=='\0' || *in==G_DIR_SEPARATOR)
        *out = '\0';

        if (!g_file_test (buf, G_FILE_TEST_IS_DIR))
          Log :: add_info_va (_("Creating directory \"%s\""), buf);
          if (pan_mkdir (buf, 0755))
            Log::add_err_va (_("Couldn't create directory \"%s\": %s"), buf, pan_strerror (errno));
            retval = FALSE;

      *out = *in;
      if (!*in)


    g_free (buf);

  return retval;

Here is the call graph for this function:

Here is the caller graph for this function:

Generated by  Doxygen 1.6.0   Back to index