]> granicus.if.org Git - procps-ng/commitdiff
top: reposition some of that 'other filtering' support
authorJim Warner <james.warner@comcast.net>
Sun, 17 Jun 2018 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Sat, 23 Jun 2018 12:03:56 +0000 (22:03 +1000)
When we get around to saving that 'Other Filter' stuff
in the rcfile, we'll need access to the Fieldstab plus
the justify_pad() function. So this commit repositions
two 'osel' functions in anticipation of adding 1 more.

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.c
top/top.h

index f0655c5fd070010e7b0277ff06c141c480793ba6..9861b1d96977da3ef26ef90766edf8de498a77a7 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -1496,74 +1496,6 @@ static inline const char *hex_make (KLONG num, int noz) {
 } // end: hex_make
 
 
-        /*
-         * This sructure is hung from a WIN_t when other filtering is active */
-struct osel_s {
-   struct osel_s *nxt;                         // the next criteria or NULL.
-   int (*rel)(const char *, const char *);     // relational strings compare
-   char *(*sel)(const char *, const char *);   // for selection str compares
-   char *raw;                                  // raw user input (dup check)
-   char *val;                                  // value included or excluded
-   int   ops;                                  // filter delimiter/operation
-   int   inc;                                  // include == 1, exclude == 0
-   int   enu;                                  // field (procflag) to filter
-};
-
-
-        /*
-         * A function to turn off entire other filtering in the given window */
-static void osel_clear (WIN_t *q) {
-   struct osel_s *osel = q->osel_1st;
-
-   while (osel) {
-      struct osel_s *nxt = osel->nxt;
-      free(osel->val);
-      free(osel->raw);
-      free(osel);
-      osel = nxt;
-   }
-   q->osel_tot = 0;
-   q->osel_1st = NULL;
-   free (q->osel_prt);
-   q->osel_prt = NULL;
-#ifndef USE_X_COLHDR
-   OFFw(Curwin, NOHISEL_xxx);
-#endif
-} // end: osel_clear
-
-
-        /*
-         * Determine if there are matching values or relationships among the
-         * other criteria in this passed window -- it's called from only one
-         * place, and likely inlined even without the directive */
-static inline int osel_matched (const WIN_t *q, FLG_t enu, const char *str) {
-   struct osel_s *osel = q->osel_1st;
-
-   while (osel) {
-      if (osel->enu == enu) {
-         int r;
-         switch (osel->ops) {
-            case '<':                          // '<' needs the r < 0 unless
-               r = osel->rel(str, osel->val);  // '!' which needs an inverse
-               if ((r >= 0 && osel->inc) || (r < 0 && !osel->inc)) return 0;
-               break;
-            case '>':                          // '>' needs the r > 0 unless
-               r = osel->rel(str, osel->val);  // '!' which needs an inverse
-               if ((r <= 0 && osel->inc) || (r > 0 && !osel->inc)) return 0;
-               break;
-            default:
-            {  char *p = osel->sel(str, osel->val);
-               if ((!p && osel->inc) || (p && !osel->inc)) return 0;
-            }
-               break;
-         }
-      }
-      osel = osel->nxt;
-   }
-   return 1;
-} // end: osel_matched
-
-
         /*
          * Validate the passed string as a user name or number,
          * and/or update the window's 'u/U' selection stuff. */
@@ -3537,6 +3469,75 @@ signify_that:
 #undef INSP_RLEN
 #undef INSP_BUSY
 \f
+/*######  Other Filtering  ###############################################*/
+
+        /*
+         * This sructure is hung from a WIN_t when other filtering is active */
+struct osel_s {
+   struct osel_s *nxt;                         // the next criteria or NULL.
+   int (*rel)(const char *, const char *);     // relational strings compare
+   char *(*sel)(const char *, const char *);   // for selection str compares
+   char *raw;                                  // raw user input (dup check)
+   char *val;                                  // value included or excluded
+   int   ops;                                  // filter delimiter/operation
+   int   inc;                                  // include == 1, exclude == 0
+   int   enu;                                  // field (procflag) to filter
+};
+
+
+        /*
+         * A function to turn off entire other filtering in the given window */
+static void osel_clear (WIN_t *q) {
+   struct osel_s *osel = q->osel_1st;
+
+   while (osel) {
+      struct osel_s *nxt = osel->nxt;
+      free(osel->val);
+      free(osel->raw);
+      free(osel);
+      osel = nxt;
+   }
+   q->osel_tot = 0;
+   q->osel_1st = NULL;
+   free (q->osel_prt);
+   q->osel_prt = NULL;
+#ifndef USE_X_COLHDR
+   OFFw(Curwin, NOHISEL_xxx);
+#endif
+} // end: osel_clear
+
+
+        /*
+         * Determine if there are matching values or relationships among the
+         * other criteria in this passed window -- it's called from only one
+         * place, and likely inlined even without the directive */
+static inline int osel_matched (const WIN_t *q, FLG_t enu, const char *str) {
+   struct osel_s *osel = q->osel_1st;
+
+   while (osel) {
+      if (osel->enu == enu) {
+         int r;
+         switch (osel->ops) {
+            case '<':                          // '<' needs the r < 0 unless
+               r = osel->rel(str, osel->val);  // '!' which needs an inverse
+               if ((r >= 0 && osel->inc) || (r < 0 && !osel->inc)) return 0;
+               break;
+            case '>':                          // '>' needs the r > 0 unless
+               r = osel->rel(str, osel->val);  // '!' which needs an inverse
+               if ((r <= 0 && osel->inc) || (r > 0 && !osel->inc)) return 0;
+               break;
+            default:
+            {  char *p = osel->sel(str, osel->val);
+               if ((!p && osel->inc) || (p && !osel->inc)) return 0;
+            }
+               break;
+         }
+      }
+      osel = osel->nxt;
+   }
+   return 1;
+} // end: osel_matched
+\f
 /*######  Startup routines  ##############################################*/
 
         /*
index 264e3de0be336198471d1e6249463ee4b67f81ba..e2fea1409d33408e7f1f4f84923145f481c1d568 100644 (file)
--- a/top/top.h
+++ b/top/top.h
@@ -710,8 +710,6 @@ typedef struct WIN_t {
 //atic float         get_float (const char *prompt);
 //atic int           get_int (const char *prompt);
 //atic inline const char *hex_make (KLONG num, int noz);
-//atic void          osel_clear (WIN_t *q);
-//atic inline int    osel_matched (const WIN_t *q, FLG_t enu, const char *str);
 //atic const char   *user_certify (WIN_t *q, const char *str, char typ);
 //atic inline int    user_matched (const WIN_t *q, const proc_t *p);
 /*------  Basic Formatting support  --------------------------------------*/
@@ -758,6 +756,9 @@ typedef struct WIN_t {
 //atic void          insp_show_pgs (int col, int row, int max);
 //atic int           insp_view_choice (proc_t *obj);
 //atic void          inspection_utility (int pid);
+/*------  Other Filtering ------------------------------------------------*/
+//atic void          osel_clear (WIN_t *q);
+//atic inline int    osel_matched (const WIN_t *q, FLG_t enu, const char *str);
 /*------  Startup routines  ----------------------------------------------*/
 //atic void          before (char *me);
 //atic int           config_cvt (WIN_t *q);