[Frugalware-git] yaxmenu: xdg.c * initial draft

2009-12-06 Thread James Buren
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=yaxmenu.git;a=commitdiff;h=c87faf1eb324d5e9ef7fc2cc16c9d1addba98f6f

commit c87faf1eb324d5e9ef7fc2cc16c9d1addba98f6f
Author: James Buren 
Date:   Sun Dec 6 15:51:40 2009 -0600

xdg.c
* initial draft

diff --git a/src/xdg.c b/src/xdg.c
new file mode 100644
index 000..2875aa0
--- /dev/null
+++ b/src/xdg.c
@@ -0,0 +1,91 @@
+#include "globals.h"
+#include "utility.h"
+#include "xdg.h"
+
+static const char home_env[]= "HOME";
+static const char xdg_delimiter[]   = ":";
+static const size_t xdg_base_elements   = 3;
+static const char xdg_config_home_env[] = "XDG_CONFIG_HOME";
+static const char xdg_config_home_def[] = ".config";
+static const char xdg_config_dirs_env[] = "XDG_CONFIG_DIRS";
+static const char xdg_config_dirs_def[] = "/etc/xdg";
+static const char xdg_data_home_env[]   = "XDG_DATA_HOME";
+static const char xdg_data_home_def[]   = ".local/share";
+static const char xdg_data_dirs_env[]   = "XDG_DATA_DIRS";
+static const char xdg_data_dirs_def[]   = "/usr/local/share:/usr/share";
+
+bool xdg_init(void) {
+  const char *env;
+  char home[PATH_MAX], user[PATH_MAX], sys[PATH_MAX], path[PATH_MAX];
+  char *str;
+  size_t num;
+
+  env = getenv(home_env);
+
+  if(!env) {
+eprintf("Failed to retrieve %s environmental variable.\n",home_env);
+return false;
+  }
+
+  xsnprintf(home,"%s",env);
+
+  env = getenv(xdg_config_home_env);
+
+  if(env && *env)
+xsnprintf(user,"%s",env);
+  else
+xsnprintf(user,"%s/%s",home,xdg_config_home_def);
+
+  env = getenv(xdg_config_dirs_env);
+
+  if(env && *env)
+xsnprintf(sys,"%s",env);
+  else
+xsnprintf(sys,"%s",xdg_config_dirs_def);
+
+  G->cfgdirs = xnew(char *,xstrclen(sys,':') + xdg_base_elements);
+
+  xsnprintf(path,"%s/%s",user,G->progname);
+
+  G->cfgdirs[num = 0] = xstrdup(path);
+
+  str = strtok(sys,xdg_delimiter);
+
+  do {
+xsnprintf(path,"%s/%s",str,G->progname);
+G->cfgdirs[++num] = xstrdup(path);
+  } while((str = strtok(NULL,xdg_delimiter)));
+
+  G->cfgdirs[num + 1] = NULL;
+
+  env = getenv(xdg_data_home_env);
+
+  if(env && *env)
+xsnprintf(user,"%s",env);
+  else
+xsnprintf(user,"%s/%s",home,xdg_data_home_def);
+
+  env = getenv(xdg_data_dirs_env);
+
+  if(env && *env)
+xsnprintf(sys,"%s",env);
+  else
+xsnprintf(sys,"%s",xdg_data_dirs_def);
+
+  G->datadirs = xnew(char *,xstrclen(sys,':') + xdg_base_elements);
+
+  xsnprintf(path,"%s/%s",user,G->progname);
+
+  G->datadirs[num = 0] = xstrdup(path);
+
+  str = strtok(sys,xdg_delimiter);
+
+  do {
+xsnprintf(path,"%s/%s",str,G->progname);
+G->datadirs[++num] = xstrdup(path);
+  } while((str = strtok(NULL,xdg_delimiter)));
+
+  G->datadirs[num + 1] = NULL;
+
+  return true;
+}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] yaxmenu: xdg.c * initial draft

2009-12-03 Thread James Buren
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=yaxmenu.git;a=commitdiff;h=dc2ee67dd5e974c52d3e26197181c5dc29064e40

commit dc2ee67dd5e974c52d3e26197181c5dc29064e40
Author: James Buren 
Date:   Thu Dec 3 19:59:35 2009 -0600

xdg.c
* initial draft

diff --git a/src/xdg.c b/src/xdg.c
new file mode 100644
index 000..7c8f1c3
--- /dev/null
+++ b/src/xdg.c
@@ -0,0 +1,15 @@
+#include "autostring.h"
+#include "xdg.h"
+
+#define XDG_CONFIG_HOME_DEFAULT "/.config"
+#define XDG_CONFIG_DIRS_DEFAULT "/etc/xdg"
+#define XDG_DATA_HOME_DEFAULT   "/.local/share"
+#define XDG_DATA_DIRS_DEFAULT   "/usr/local/share:/usr/share"
+#define PROGRAM_DIRECTORY   "/yaxmenu"
+
+// Designed for XDG Base Directory Specification Version 0.6
+// Url: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+
+bool xdg_init(xdg_t *xdg) {
+  return true;
+}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git