[vlc-devel] [PATCH v2 1/13] core: add config_GetTempPath()
Lyndon Brown
jnqnfe at gmail.com
Tue Oct 6 07:56:34 CEST 2020
From: Lyndon Brown <jnqnfe at gmail.com>
Date: Mon, 5 Oct 2020 20:16:48 +0100
Subject: core: add config_GetTempPath()
to provide a common interface to the system/user temporary directory.
we will make use of this with mkstemp().
diff --git a/include/vlc_configuration.h b/include/vlc_configuration.h
index c6075c334a..02249048a5 100644
--- a/include/vlc_configuration.h
+++ b/include/vlc_configuration.h
@@ -320,6 +320,13 @@ typedef enum vlc_user_dir
VLC_API char * config_GetUserDir( vlc_userdir_t ) VLC_USED VLC_MALLOC;
+/**
+ * Gets system/user temp directory.
+ *
+ * @return a heap-allocated string (use free() to release it), or NULL on error
+ */
+VLC_API char *config_GetTempPath(void) VLC_USED VLC_MALLOC;
+
VLC_API void config_AddIntf(const char *);
VLC_API void config_RemoveIntf(const char *);
VLC_API bool config_ExistIntf(const char *) VLC_USED;
diff --git a/src/darwin/dirs.m b/src/darwin/dirs.m
index 3a300a5824..74e2183b7a 100644
--- a/src/darwin/dirs.m
+++ b/src/darwin/dirs.m
@@ -230,3 +230,8 @@ char *config_GetUserDir (vlc_userdir_t type)
free(psz_parent);
return psz_dir;
}
+
+char *config_GetTempPath(void)
+{
+ return strdup("/tmp");
+}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index bd00a9b74a..028891b3c9 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -60,6 +60,7 @@ config_ExistIntf
config_FindConfig
config_GetFloat
config_GetSysPath
+config_GetTempPath
config_GetUserDir
config_GetInt
config_GetIntChoices
diff --git a/src/os2/dirs.c b/src/os2/dirs.c
index 350067472c..152e1ec673 100644
--- a/src/os2/dirs.c
+++ b/src/os2/dirs.c
@@ -177,3 +177,11 @@ char *config_GetUserDir (vlc_userdir_t type)
}
return config_GetHomeDir ();
}
+
+char *config_GetTempPath(void)
+{
+ const char *dir = getenv("TEMP");
+ if (dir != NULL)
+ return FromLocaleDup(dir);
+ return NULL;
+}
diff --git a/src/posix/dirs.c b/src/posix/dirs.c
index d6acdb47dc..995be9b3ce 100644
--- a/src/posix/dirs.c
+++ b/src/posix/dirs.c
@@ -297,3 +297,8 @@ char *config_GetUserDir (vlc_userdir_t type)
}
return config_GetHomeDir ();
}
+
+char *config_GetTempPath(void)
+{
+ return strdup("/tmp");
+}
diff --git a/src/win32/dirs-uap.c b/src/win32/dirs-uap.c
index e1c7506961..a27bd6eeb9 100644
--- a/src/win32/dirs-uap.c
+++ b/src/win32/dirs-uap.c
@@ -304,3 +304,9 @@ char *config_GetUserDir (vlc_userdir_t type)
vlc_assert_unreachable ();
}
}
+
+char *config_GetTempPath(void)
+{
+ //FIXME
+ return NULL;
+}
diff --git a/src/win32/dirs.c b/src/win32/dirs.c
index 7c39e391c2..7e3516bc8a 100644
--- a/src/win32/dirs.c
+++ b/src/win32/dirs.c
@@ -168,3 +168,13 @@ char *config_GetUserDir (vlc_userdir_t type)
}
vlc_assert_unreachable ();
}
+
+char *config_GetTempPath(void)
+{
+ wchar_t wdir[MAX_PATH + 1];
+
+ DWORD len = GetTempPathW(MAX_PATH + 1, wdir);
+ if (len != 0 && len <= MAX_PATH)
+ return FromWide(wdir);
+ return NULL;
+}
More information about the vlc-devel
mailing list