OSDN Git Service

Let the preprocessor to strip get_packs()
authorwifiextender <router@archlinux.info>
Wed, 20 Jul 2016 22:53:38 +0000 (00:53 +0200)
committerwifiextender <router@archlinux.info>
Wed, 20 Jul 2016 22:53:38 +0000 (00:53 +0200)
bootstrap
src/constants2.h
src/functions.c
src/main.c

index 58fc2e4..95484e7 100644 (file)
--- a/bootstrap
+++ b/bootstrap
@@ -39,6 +39,15 @@ _gen_files() {
   prog_name='dwmbar'
   prog_ver='0.9'
 
+  # to strip get_packs() at runtime
+  for x in {0..6}
+  do
+    [[ "${1}" == "${_bases[${x}]}" ]] && {
+      distro_num="${x}"
+      break;
+    }
+  done
+
   # configure.ac
   configure_ac=("# This file is processed by autoconf to create a configure script
   AC_INIT(["${prog_name}"], ["${prog_ver}"])
@@ -86,8 +95,8 @@ _gen_files() {
   )
 
   src_makefile=('AM_CPPFLAGS = \
-      -DGIVEN_DISTRO=\"'${1}'\" \
-      -DICONS_DIR=\"$(ICONZ)\"
+      -DICONS_DIR=\"$(ICONZ)\" \
+      -DDISTRO='${distro_num}'
 
   bin_PROGRAMS = \
     '${prog_name}'
@@ -96,7 +105,8 @@ _gen_files() {
     -O2 -Wextra -Wall -fno-aggressive-loop-optimizations \
     -Wundef -Wwrite-strings -Wcast-align -Wstrict-overflow=5 \
     -W -Wshadow -Wconversion -Wpointer-arith -Wstrict-prototypes \
-    -Wformat=2 -Wmissing-prototypes -Wno-unused-result
+    -Wformat=2 -Wmissing-prototypes -Wno-unused-result \
+    -Wno-unused-function
 
   '${prog_name}'_LDADD = $(X_LIBS) $(ALSA_LIBS)
 
index 138cb97..1eeee10 100644 (file)
@@ -30,7 +30,6 @@
 #define FILL_ARR(x, z, ...) (snprintf(x, VLA, z, __VA_ARGS__))
 #define FILL_UINT_ARR(x, z) (FILL_ARR(x, FMT_UINT, z))
 #define FILL_STR_ARR(x, z, ...) (FILL_ARR(z, (1 == x ? "%s" : "%s %s"), __VA_ARGS__))
-#define STREQ(x, z) (!strcmp(x, z))
 
 #define HWMON_DIR "/sys/class/hwmon/hwmon0"
 #define CPU_TEMP_FILE HWMON_DIR"/temp1_input"
index 70a0ef6..042ecd3 100644 (file)
@@ -40,6 +40,7 @@
 #include "constants1.h"
 #include "constants2.h"
 #include "functions.h"
+/* #include "config.h" */
 
 static void get_temp(const char *, char *);
 static uint_fast16_t glob_packages(const char *);
@@ -166,44 +167,41 @@ glob_packages(const char *str1) {
 }
 
 
+/* perform stripping during runtime
+ * instead conditionally checking 
+ * each time the program is executed */
 void 
 get_packs(char *str1) {
-  FILE *pkgs_file;
   uint_fast16_t packages = 0;
 
-  if (STREQ(str1, "archlinux"))
-    packages = glob_packages("/var/lib/pacman/local/*");
+#if DISTRO == 0 /* archlinux */
+  packages = glob_packages("/var/lib/pacman/local/*");
 
-  else if (STREQ(str1, "frugalware")) {
-    pkgs_file = popen("pacman-g2 -Q 2> /dev/null | wc -l", "r");
-    fscanf(pkgs_file, "%"SCNuFAST16, &packages);
-    pclose(pkgs_file);
-  }
+#elif DISTRO == 5 /* frugalware */
+  FILE *pkgs_file = popen("pacman-g2 -Q 2> /dev/null | wc -l", "r");
+  fscanf(pkgs_file, "%"SCNuFAST16, &packages);
+  pclose(pkgs_file);
 
-  else if (STREQ(str1, "debian"))
-    packages = glob_packages("/var/lib/dpkg/info/*.list");
+#elif DISTRO == 1 /* debian */
+  packages = glob_packages("/var/lib/dpkg/info/*.list");
 
-  else if (STREQ(str1, "slackware"))
-    packages = glob_packages("/var/log/packages/*");
+#elif DISTRO == 4 /* slackware */
+  packages = glob_packages("/var/log/packages/*");
 
-  else if (STREQ(str1, "gentoo"))
-    packages = glob_packages("/var/db/pkg/*/*");
+#elif DISTRO == 2 /* gentoo */
+  packages = glob_packages("/var/db/pkg/*/*");
 
-  else if (STREQ(str1, "rhel")) {
-    pkgs_file = popen("rpm -qa 2> /dev/null | wc -l", "r");
-    fscanf(pkgs_file, "%"SCNuFAST16, &packages);
-    pclose(pkgs_file);
-  }
+#elif DISTRO == 4 /* rhel */
+  FILE *pkgs_file = popen("rpm -qa 2> /dev/null | wc -l", "r");
+  fscanf(pkgs_file, "%"SCNuFAST16, &packages);
+  pclose(pkgs_file);
 
-  else if (STREQ(str1, "angstrom")) {
-    pkgs_file = popen("opkg list-installed 2> /dev/null | wc -l", "r");
-    fscanf(pkgs_file, "%"SCNuFAST16, &packages);
-    pclose(pkgs_file);
-  }
+#elif DISTRO == 6 /* angstrom */
+  FILE *pkgs_file = popen("opkg list-installed 2> /dev/null | wc -l", "r");
+  fscanf(pkgs_file, "%"SCNuFAST16, &packages);
+  pclose(pkgs_file);
 
-  else {
-    exit_with_err(ERR,"You have supplied a wrong distro");
-  }
+#endif
 
   FILL_ARR(str1, "%"PRIuFAST16, packages);
 }
index 45c76f1..28fb407 100644 (file)
@@ -36,8 +36,7 @@ int main(void) {
   struct timespec tc = {0};
   tc.tv_nsec = sysconf(_SC_CLK_TCK) * 1000000L;
 
-  char packs[VLA] = GIVEN_DISTRO;
-  char mobo[VLA], cpu[VLA], ram[VLA], ssd[VLA];
+  char packs[VLA], mobo[VLA], cpu[VLA], ram[VLA], ssd[VLA];
   char kern[VLA], volume[VLA], Time[VLA], combine[WHOLE_MAIN_ARR_LEN];
   char voltage[VLA], cpu_temp[VLA], mobo_temp[VLA], fans[VLA];