summary refs log tree commit diff
path: root/util.c
diff options
context:
space:
mode:
authorbernd <bernd>2007-04-27 17:58:48 +0000
committerbernd <bernd>2007-04-27 17:58:48 +0000
commit3d12c94f42f91e957fa8a68efcd3b0387791e6cf (patch)
tree8bd9782a01bbd59ee27201e29b30d058b15445db /util.c
downloadcwm-3d12c94f42f91e957fa8a68efcd3b0387791e6cf.tar.gz
cwm-3d12c94f42f91e957fa8a68efcd3b0387791e6cf.tar.xz
cwm-3d12c94f42f91e957fa8a68efcd3b0387791e6cf.zip
Initial revision
Diffstat (limited to 'util.c')
-rw-r--r--util.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/util.c b/util.c
new file mode 100644
index 0000000..4214ce6
--- /dev/null
+++ b/util.c
@@ -0,0 +1,72 @@
+/*
+ * calmwm - the calm window manager
+ *
+ * Copyright (c) 2004 Marius Aamodt Eriksen <marius@monkey.org>
+ * All rights reserved.
+ *
+ * $Id$
+ */
+
+#include "headers.h"
+#include "calmwm.h"
+
+#define MAXARGLEN 20
+
+int
+u_spawn(char *argstr)
+{
+	char *args[MAXARGLEN], **ap;
+	char **end = &args[MAXARGLEN - 1];
+
+	switch (fork()) {
+	case 0:
+		ap = args;
+		while (ap < end && (*ap = strsep(&argstr, " \t")) != NULL)
+			ap++;
+
+		*ap = NULL;
+		setsid();
+		execvp(args[0], args);
+		err(1, args[0]);
+		break;
+	case -1:
+		warn("fork");
+		return (-1);
+	default:
+		break;
+	}
+
+	return (0);
+}
+
+int dirent_exists(char *filename) {
+       struct stat buffer;
+
+       return stat(filename, &buffer);
+}
+
+int dirent_isdir(char *filename) {
+       struct stat buffer;
+       int return_value;
+
+       return_value = stat(filename, &buffer);
+
+       if(return_value == -1)
+               return 0;
+       else
+               return S_ISDIR(buffer.st_mode);
+}
+
+int dirent_islink(char *filename) {
+       struct stat buffer;
+       int return_value;
+
+       return_value = lstat(filename, &buffer);
+
+       if(return_value == -1)
+               return 0;
+       else
+               return S_ISLNK(buffer.st_mode);
+}
+
+