TEST(String, ExpandHome) { char *home, *result; int length_home; home = getenv ("HOME"); length_home = strlen (home); POINTERS_EQUAL(NULL, string_expand_home (NULL)); result = string_expand_home ("~/abc.txt"); CHECK(strncmp (result, home, length_home) == 0); LONGS_EQUAL(length_home + 8, strlen (result)); STRCMP_EQUAL(result + length_home, "/abc.txt"); free (result); }
char * util_search_full_lib_name (const char *filename, const char *plugins_dir) { char *filename2, *full_name; int i; /* expand home in filename */ filename2 = string_expand_home (filename); if (!filename2) return NULL; /* if full path, return it */ if (strchr (filename2, '/') || strchr (filename2, '\\')) return filename2; if (config_plugin_extensions) { for (i = 0; i < config_num_plugin_extensions; i++) { full_name = util_search_full_lib_name_ext (filename2, config_plugin_extensions[i], plugins_dir); if (full_name) { free (filename2); return full_name; } } } else { full_name = util_search_full_lib_name_ext (filename2, "", plugins_dir); if (full_name) { free (filename2); return full_name; } } free (filename2); return strdup (filename); }
void network_set_gnutls_ca_file () { #ifdef HAVE_GNUTLS char *ca_path, *ca_path2; if (weechat_no_gnutls) return; ca_path = string_expand_home (CONFIG_STRING(config_network_gnutls_ca_file)); if (ca_path) { ca_path2 = string_replace (ca_path, "%h", weechat_home); if (ca_path2) { gnutls_certificate_set_x509_trust_file (gnutls_xcred, ca_path2, GNUTLS_X509_FMT_PEM); free (ca_path2); } free (ca_path); } #endif }
char * secure_get_passphrase_from_file (const char *filename) { FILE *file; char *passphrase, *filename2, buffer[1024+1], *pos; size_t num_read; passphrase = NULL; filename2 = string_expand_home (filename); if (!filename2) return NULL; file = fopen (filename2, "r"); if (file) { num_read = fread (buffer, 1, sizeof (buffer) - 1, file); if (num_read > 0) { buffer[num_read] = '\0'; pos = strchr (buffer, '\r'); if (pos) pos[0] = '\0'; pos = strchr (buffer, '\n'); if (pos) pos[0] = '\0'; if (buffer[0]) passphrase = strdup (buffer); } fclose (file); } free (filename2); return passphrase; }