--- src/storage.c | 30 ++++++++++++++++++++++++++++++ src/storage.h | 1 + 2 files changed, 31 insertions(+) diff --git a/src/storage.c b/src/storage.c index 9ef84e32..b509e161 100644 --- a/src/storage.c +++ b/src/storage.c @@ -50,6 +50,7 @@ static char *storage_path = NULL; static char *storage_hotspot_path = NULL; +static char *storage_ap_path = NULL; static int create_dirs(const char *filename) { @@ -221,6 +222,16 @@ bool storage_create_dirs(void) return false; } + storage_ap_path = l_strdup_printf("%s/ap/", storage_path); + + if (create_dirs(storage_ap_path)) { + l_error("Failed to create %s", storage_ap_path); + + l_free(storage_path); + l_free(storage_hotspot_path); + l_free(storage_ap_path); + } + return true; } @@ -228,6 +239,7 @@ void storage_cleanup_dirs(void) { l_free(storage_path); l_free(storage_hotspot_path); + l_free(storage_ap_path); } char *storage_get_path(const char *format, ...) @@ -266,6 +278,24 @@ char *storage_get_hotspot_path(const char *format, ...) return str; } +char *storage_get_ap_path(const char *format, ...) +{ + va_list args; + char *fmt, *str; + + if (!format) + return l_strdup(storage_ap_path); + + fmt = l_strdup_printf("%s/%s", storage_ap_path, format); + + va_start(args, format); + str = l_strdup_vprintf(fmt, args); + va_end(args); + + l_free(fmt); + return str; +} + char *storage_get_network_file_path(enum security type, const char *ssid) { char *path; diff --git a/src/storage.h b/src/storage.h index 80b63c53..54c81d10 100644 --- a/src/storage.h +++ b/src/storage.h @@ -36,6 +36,7 @@ bool storage_create_dirs(void); void storage_cleanup_dirs(void); char *storage_get_path(const char *format, ...); char *storage_get_hotspot_path(const char *format, ...); +char *storage_get_ap_path(const char *format, ...); const char *storage_network_ssid_from_path(const char *path, enum security *type); -- 2.26.2