[wiki] [sites] added sprint, the setRoot bug fixed, added for loop for spawn() || levi0x0
 
commit 36d32739c973f78a4fa871372e2f885bd2dd97f6
Author: levi0x0 <levi0x0x_AT_gmail.com>
Date:   Sun Mar 1 10:45:12 2015 +0200
    added sprint, the setRoot bug fixed, added for loop for spawn()
diff --git a/dwm.suckless.org/dwmstatus/barM.c b/dwm.suckless.org/dwmstatus/barM.c
index 6cf1f2e..f45f18a 100644
--- a/dwm.suckless.org/dwmstatus/barM.c
+++ b/dwm.suckless.org/dwmstatus/barM.c
_AT_@ -11,33 +11,60 @@
  *  Read main() to configure your new status Bar.
  *
  *  compile: gcc -o barM barM.c -lX11
+ *  
+ *  mv barM /usr/local/bin/
  */
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
 #include <string.h>
+#include <stdarg.h>
 #include <X11/Xlib.h>
 
-#define VERSION "0.10"
-#define TIME_FORMAT " (%H:%M) (%d-%m-%Y)"
+/*
+ *  Put this in your .xinitrc file: 
+ *
+ *      while true;do 
+ *              $(barM)
+ *      done &
+ *  
+ */
+
+#define VERSION "0.11"
+#define TIME_FORMAT "(%H:%M) (%d-%m-%Y)"
 #define MAXSTR  1024
 
-char * TimeADate(void) {
-        static char buffer[MAXSTR];
+static char status[MAXSTR];
 
-        /* get time*/
-        time_t now = time(0);
+/*append here your commands*/
+char *commands[] = {"uname",
+                    "free -mh | awk 'NR==2{print $3\"/\"$2}'"
+};
 
+/* will append the buffer to status*/
+void sprint(char *format, ...) {
+        va_list li;
+        static char s[MAXSTR];
+        va_start(li, format);
+        vsprintf(s, format, li);
+        va_end(li);
 
-        /* Read the time by the foramt*/
-        strftime(buffer, MAXSTR, TIME_FORMAT, localtime(&now));
+        strcat(status, s);
+}
 
-        /* Return the buffer content*/
-        return buffer;
+/* returen the date*/
+char * date(void) {
+        static char date[MAXSTR];
+
+        time_t now = time(0);
+
+        strftime(date, MAXSTR, TIME_FORMAT, localtime(&now));
+        return date;
 }
 
 
+/* open a pipe for a new coomand and return the output*/
 char * spawn(char *c) {
         FILE *proc;
         static char buffer[MAXSTR];
_AT_@ -57,7 +84,6 @@ char * spawn(char *c) {
 void XSetRoot(char *name) {
         Display *display;
 
-        /* try open display*/
         if (( display = XOpenDisplay(0x0)) == NULL ) {
                 fprintf(stderr, "[barM] cannot open display!
");
                 exit(1);
_AT_@ -69,15 +95,16 @@ void XSetRoot(char *name) {
         XCloseDisplay(display);
 }
 
-int main(int argc, char **argv) {
-        char status[MAXSTR];
-
-        sprintf(status, "(%s) %s",  spawn("free -mh | awk 'NR==2{print $3\"/\"$2}'"), 
-                        TimeADate());
+int main(int argc, char **argv) { 
+        int i = 0;
+        for(i = 0; commands[i]; i++ ) {
+                sprint("(%s) ", spawn(commands[i]));
+        }
 
+        sprint("%s", date());
         XSetRoot(status);
 
-        /*sleep function*/
+        /* sleep by default you dont need to add it to your bash*/
         sleep(1);
 
         return 0;
Received on Sat Feb 28 2015 - 09:46:26 CET
This archive was generated by hypermail 2.3.0
: Thu Jun 18 2015 - 17:40:11 CEST