1From ee4b85a5edf36b320e521707810cc69f1efad5d2 Mon Sep 17 00:00:00 2001
2From: Michael Forney <mforney@mforney.org>
3Date: Sun, 16 Jun 2019 12:39:40 -0700
4Subject: [PATCH] Don't omit second operand to '?' operator
5
6---
7 ip/iproute_lwtunnel.c | 4 ++--
8 ip/iptunnel.c | 7 ++++++-
9 lib/bpf_legacy.c | 2 +-
10 lib/utils.c | 7 +++++--
11 misc/ss.c | 26 ++++++++++++++++++--------
12 5 files changed, 32 insertions(+), 14 deletions(-)
13
14diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
15index 94985972..7f3982aa 100644
16--- a/ip/iproute_lwtunnel.c
17+++ b/ip/iproute_lwtunnel.c
18@@ -394,7 +394,7 @@ static const char *format_action_type(int action)
19 if (action < 0 || action > SEG6_LOCAL_ACTION_MAX)
20 return "<invalid>";
21
22- return seg6_action_names[action] ?: "<unknown>";
23+ return seg6_action_names[action] ? seg6_action_names[action] : "<unknown>";
24 }
25
26 static int read_action_type(const char *name)
27@@ -425,7 +425,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
28
29 if (is_json_context())
30 print_string(PRINT_JSON, str, NULL,
31- progname ? : "<unknown>");
32+ progname ? progname : "<unknown>");
33 else {
34 fprintf(fp, "%s ", str);
35 if (progname)
36diff --git a/ip/iptunnel.c b/ip/iptunnel.c
37index 46c5f894..f84e25ed 100644
38--- a/ip/iptunnel.c
39+++ b/ip/iptunnel.c
40@@ -284,11 +284,16 @@ static int do_add(int cmd, int argc, char **argv)
41 static int do_del(int argc, char **argv)
42 {
43 struct ip_tunnel_parm p;
44+ const char *name;
45
46 if (parse_args(argc, argv, SIOCDELTUNNEL, &p) < 0)
47 return -1;
48
49- return tnl_del_ioctl(tnl_defname(&p) ? : p.name, p.name, &p);
50+ name = tnl_defname(&p);
51+ if (!name)
52+ name = p.name;
53+
54+ return tnl_del_ioctl(name, p.name, &p);
55 }
56
57 static void print_tunnel(const void *t)
58diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
59index 253e8240..a0afe0bc 100644
60--- a/lib/bpf_legacy.c
61+++ b/lib/bpf_legacy.c
62@@ -771,7 +771,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
63 mnt = bpf_find_mntpt("bpf", BPF_FS_MAGIC, bpf_tmp,
64 sizeof(bpf_tmp), bpf_known_mnts);
65 if (!mnt) {
66- mnt = mnt_env ? : BPF_DIR_MNT;
67+ mnt = mnt_env ? mnt_env : BPF_DIR_MNT;
68 ret = bpf_mnt_check_target(mnt);
69 if (!ret)
70 ret = bpf_mnt_fs(mnt);
71diff --git a/lib/utils.c b/lib/utils.c
72index 040b935c..cfe0e2e9 100644
73--- a/lib/utils.c
74+++ b/lib/utils.c
75@@ -953,8 +953,10 @@ int __get_hz(void)
76 int hz = 0;
77 FILE *fp;
78
79- if (getenv("HZ"))
80- return atoi(getenv("HZ")) ? : HZ;
81+ if (getenv("HZ")) {
82+ hz = atoi(getenv("HZ"));
83+ goto out;
84+ }
85
86 if (getenv("PROC_NET_PSCHED"))
87 snprintf(name, sizeof(name)-1,
88@@ -975,6 +977,7 @@ int __get_hz(void)
89 hz = denom;
90 fclose(fp);
91 }
92+out:
93 if (hz)
94 return hz;
95 return HZ;
96diff --git a/misc/ss.c b/misc/ss.c
97index e5d97d95..3ed6ac18 100644
98--- a/misc/ss.c
99+++ b/misc/ss.c
100@@ -464,7 +464,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
101 char store[128];
102
103 if (!p) {
104- p = getenv("PROC_ROOT") ? : "/proc";
105+ p = getenv("PROC_ROOT");
106+ if (!p)
107+ p = "/proc";
108 snprintf(store, sizeof(store)-1, "%s/%s", p, name);
109 p = store;
110 }
111@@ -634,12 +636,16 @@ static void user_ent_destroy(void)
112
113 static void user_ent_hash_build(void)
114 {
115- const char *root = getenv("PROC_ROOT") ? : "/proc/";
116+ const char *root;
117 char name[MAX_PATH_LEN];
118 struct dirent *d;
119 int nameoff;
120 DIR *dir;
121
122+ root = getenv("PROC_ROOT");
123+ if (!root)
124+ root = "/proc/";
125+
126 strlcpy(name, root, sizeof(name));
127
128 if (strlen(name) == 0 || name[strlen(name) - 1] != '/')
129@@ -2301,7 +2307,10 @@ void *parse_hostcond(char *addr, bool is_port)
130 } else if (addr[0] == '*') {
131 port = addr+1;
132 } else {
133- port = strrchr(strchr(addr, '/') ? : addr, ':');
134+ port = strchr(addr, '/');
135+ if (!port)
136+ port = addr;
137+ port = strrchr(port, ':');
138 }
139
140 if (is_port)
141@@ -4089,9 +4098,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
142
143 sock_state_print(s);
144
145- sock_addr_print(s->name ?: "*", " ",
146+ sock_addr_print(s->name ? s->name : "*", " ",
147 uint_to_str(s->lport, port_name), NULL);
148- sock_addr_print(s->peer_name ?: "*", " ",
149+ sock_addr_print(s->peer_name ? s->peer_name : "*", " ",
150 uint_to_str(s->rport, port_name), NULL);
151
152 proc_ctx_print(s);
153@@ -4294,7 +4303,7 @@ static int unix_show(struct filter *f)
154 if (!p)
155 u->peer_name = "?";
156 else
157- u->peer_name = p->name ? : "*";
158+ u->peer_name = p->name ? p->name : "*";
159 }
160
161 if (f->f) {
162@@ -4798,9 +4807,10 @@ static int netlink_show_one(struct filter *f,
163 strncpy(procname, "kernel", 7);
164 } else if (pid > 0) {
165 FILE *fp;
166+ const char *root = getenv("PROC_ROOT");
167
168 snprintf(procname, sizeof(procname), "%s/%d/stat",
169- getenv("PROC_ROOT") ? : "/proc", pid);
170+ root ? root : "/proc", pid);
171 if ((fp = fopen(procname, "r")) != NULL) {
172 if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
173 snprintf(procname+strlen(procname),
174@@ -4843,7 +4853,7 @@ static int netlink_show_one(struct filter *f,
175 else if (pid > 0)
176 getpidcon(pid, &pid_context);
177
178- out(" proc_ctx=%s", pid_context ? : "unavailable");
179+ out(" proc_ctx=%s", pid_context ? pid_context : "unavailable");
180 freecon(pid_context);
181 }
182
183--
1842.44.0
185