logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0001-Revert-Use-gnu-case-range-and-gnu-conditional-omitte.patch (13080B)


  1. From beac90889183cb71ca3dfc8c9ada9175879b9c34 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Thu, 7 May 2020 00:36:14 -0700
  4. Subject: [PATCH] Revert "Use gnu-case-range and
  5. gnu-conditional-omitted-operand extensions"
  6. This reverts commit 75a6aa9258270169f43f56e063f1bfb57eebe56b.
  7. ---
  8. Makefile | 2 --
  9. command.c | 33 +++++++++++++++++++--------------
  10. complete.c | 4 ++--
  11. edit.c | 2 +-
  12. handle.c | 45 +++++++++++++++++++++++++++------------------
  13. input.c | 7 ++++++-
  14. url.c | 2 +-
  15. window.c | 2 +-
  16. 8 files changed, 57 insertions(+), 40 deletions(-)
  17. diff --git a/Makefile b/Makefile
  18. index 3abba03..9518cda 100644
  19. --- a/Makefile
  20. +++ b/Makefile
  21. @@ -2,9 +2,7 @@ PREFIX ?= /usr/local
  22. BINDIR ?= ${PREFIX}/bin
  23. MANDIR ?= ${PREFIX}/man
  24. -CEXTS = gnu-case-range gnu-conditional-omitted-operand
  25. CFLAGS += -std=c11 -Wall -Wextra -Wpedantic -Wmissing-prototypes
  26. -CFLAGS += ${CEXTS:%=-Wno-%}
  27. LDADD.libtls = -ltls
  28. LDADD.ncursesw = -lncursesw
  29. diff --git a/command.c b/command.c
  30. index a127af3..f5be51b 100644
  31. --- a/command.c
  32. +++ b/command.c
  33. @@ -68,8 +68,8 @@ static int splitChunk(const char *cmd, uint id) {
  34. int overhead = snprintf(
  35. NULL, 0, ":%s!%*s@%*s %s %s :\r\n",
  36. self.nick,
  37. - (self.user ? 0 : network.userLen), (self.user ?: "*"),
  38. - (self.host ? 0 : network.hostLen), (self.host ?: "*"),
  39. + (self.user ? 0 : network.userLen), (self.user ? self.user : "*"),
  40. + (self.host ? 0 : network.hostLen), (self.host ? self.host : "*"),
  41. cmd, idNames[id]
  42. );
  43. assert(overhead > 0 && overhead < 512);
  44. @@ -171,7 +171,7 @@ static void commandPart(uint id, char *params) {
  45. static void commandQuit(uint id, char *params) {
  46. (void)id;
  47. - set(&self.quit, (params ?: "nyaa~"));
  48. + set(&self.quit, (params ? params : "nyaa~"));
  49. }
  50. static void commandNick(uint id, char *params) {
  51. @@ -275,7 +275,7 @@ static void commandOp(uint id, char *params) {
  52. }
  53. static void commandDeop(uint id, char *params) {
  54. - channelListMode(id, '-', 'o', (params ?: self.nick));
  55. + channelListMode(id, '-', 'o', (params ? params : self.nick));
  56. }
  57. static void commandVoice(uint id, char *params) {
  58. @@ -287,7 +287,7 @@ static void commandVoice(uint id, char *params) {
  59. }
  60. static void commandDevoice(uint id, char *params) {
  61. - channelListMode(id, '-', 'v', (params ?: self.nick));
  62. + channelListMode(id, '-', 'v', (params ? params : self.nick));
  63. }
  64. static void commandBan(uint id, char *params) {
  65. @@ -362,12 +362,12 @@ static void commandWhowas(uint id, char *params) {
  66. static void commandNS(uint id, char *params) {
  67. (void)id;
  68. - ircFormat("NS %s\r\n", (params ?: "HELP"));
  69. + ircFormat("NS %s\r\n", (params ? params : "HELP"));
  70. }
  71. static void commandCS(uint id, char *params) {
  72. (void)id;
  73. - ircFormat("CS %s\r\n", (params ?: "HELP"));
  74. + ircFormat("CS %s\r\n", (params ? params : "HELP"));
  75. }
  76. static void commandQuery(uint id, char *params) {
  77. @@ -442,7 +442,8 @@ static void commandFilter(enum Heat heat, uint id, char *params) {
  78. uiFormat(
  79. id, Cold, NULL, "%sing \3%02d%s %s %s %s",
  80. (heat == Hot ? "Highlight" : "Ignor"), Brown, filter.mask,
  81. - (filter.cmd ?: ""), (filter.chan ?: ""), (filter.mesg ?: "")
  82. + (filter.cmd ? filter.cmd : ""), (filter.chan ? filter.chan : ""),
  83. + (filter.mesg ? filter.mesg : "")
  84. );
  85. } else {
  86. for (size_t i = 0; i < FilterCap && filters[i].mask; ++i) {
  87. @@ -450,8 +451,9 @@ static void commandFilter(enum Heat heat, uint id, char *params) {
  88. uiFormat(
  89. Network, Warm, NULL, "%sing \3%02d%s %s %s %s",
  90. (heat == Hot ? "Highlight" : "Ignor"), Brown, filters[i].mask,
  91. - (filters[i].cmd ?: ""), (filters[i].chan ?: ""),
  92. - (filters[i].mesg ?: "")
  93. + (filters[i].cmd ? filters[i].cmd : ""),
  94. + (filters[i].chan ? filters[i].chan : ""),
  95. + (filters[i].mesg ? filters[i].mesg : "")
  96. );
  97. }
  98. }
  99. @@ -464,8 +466,8 @@ static void commandUnfilter(enum Heat heat, uint id, char *params) {
  100. uiFormat(
  101. id, Cold, NULL, "%s %sing \3%02d%s %s %s %s",
  102. (found ? "No longer" : "Not"), (heat == Hot ? "highlight" : "ignor"),
  103. - Brown, filter.mask, (filter.cmd ?: ""), (filter.chan ?: ""),
  104. - (filter.mesg ?: "")
  105. + Brown, filter.mask, (filter.cmd ? filter.cmd : ""),
  106. + (filter.chan ? filter.chan : ""), (filter.mesg ? filter.mesg : "")
  107. );
  108. }
  109. @@ -494,7 +496,9 @@ static void commandExec(uint id, char *params) {
  110. dup2(execPipe[1], STDOUT_FILENO);
  111. dup2(utilPipe[1], STDERR_FILENO);
  112. - const char *shell = getenv("SHELL") ?: "/bin/sh";
  113. + const char *shell = getenv("SHELL");
  114. + if (!shell)
  115. + shell = "/bin/sh";
  116. execl(shell, shell, "-c", params, NULL);
  117. warn("%s", shell);
  118. _exit(EX_UNAVAILABLE);
  119. @@ -519,7 +523,8 @@ static void commandHelp(uint id, char *params) {
  120. if (pid) return;
  121. char buf[256];
  122. - snprintf(buf, sizeof(buf), "%sp^COMMANDS$", (getenv("LESS") ?: ""));
  123. + const char *less = getenv("LESS");
  124. + snprintf(buf, sizeof(buf), "%sp^COMMANDS$", (less ? less : ""));
  125. setenv("LESS", buf, 1);
  126. execlp("man", "man", "1", "catgirl", NULL);
  127. dup2(utilPipe[1], STDERR_FILENO);
  128. diff --git a/complete.c b/complete.c
  129. index 9e59db5..9ea1192 100644
  130. --- a/complete.c
  131. +++ b/complete.c
  132. @@ -71,7 +71,7 @@ static struct Node *prepend(struct Node *node) {
  133. node->next = head;
  134. if (head) head->prev = node;
  135. head = node;
  136. - tail = (tail ?: node);
  137. + if (!tail) tail = node;
  138. return node;
  139. }
  140. @@ -80,7 +80,7 @@ static struct Node *append(struct Node *node) {
  141. node->prev = tail;
  142. if (tail) tail->next = node;
  143. tail = node;
  144. - head = (head ?: node);
  145. + if (!head) head = node;
  146. return node;
  147. }
  148. diff --git a/edit.c b/edit.c
  149. index bb92edf..07705dd 100644
  150. --- a/edit.c
  151. +++ b/edit.c
  152. @@ -69,7 +69,7 @@ int editReserve(struct Edit *e, size_t index, size_t count) {
  153. return -1;
  154. }
  155. if (e->len + count > e->cap) {
  156. - size_t cap = (e->cap ?: 256);
  157. + size_t cap = (e->cap ? e->cap : 256);
  158. while (cap < e->len + count) cap *= 2;
  159. wchar_t *buf = realloc(e->buf, sizeof(*buf) * cap);
  160. if (!buf) return -1;
  161. diff --git a/handle.c b/handle.c
  162. index 9f051c7..a4f1015 100644
  163. --- a/handle.c
  164. +++ b/handle.c
  165. @@ -301,9 +301,9 @@ static void handleReplyISupport(struct Message *msg) {
  166. set(&network.setParamModes, setParam);
  167. set(&network.channelModes, channel);
  168. } else if (!strcmp(key, "EXCEPTS")) {
  169. - network.excepts = (msg->params[i] ?: "e")[0];
  170. + network.excepts = (msg->params[i] ? msg->params[i][0] : 'e');
  171. } else if (!strcmp(key, "INVEX")) {
  172. - network.invex = (msg->params[i] ?: "I")[0];
  173. + network.invex = (msg->params[i] ? msg->params[i][0] : 'I');
  174. }
  175. }
  176. }
  177. @@ -356,7 +356,7 @@ static void handleJoin(struct Message *msg) {
  178. "\3%02d%s\3\t%s%s%sarrives in \3%02d%s\3",
  179. hash(msg->user), msg->nick,
  180. (msg->params[2] ? "(" : ""),
  181. - (msg->params[2] ?: ""),
  182. + (msg->params[2] ? msg->params[2] : ""),
  183. (msg->params[2] ? "\17) " : ""),
  184. hash(msg->params[0]), msg->params[0]
  185. );
  186. @@ -388,12 +388,14 @@ static void handlePart(struct Message *msg) {
  187. id, heat, tagTime(msg),
  188. "\3%02d%s\3\tleaves \3%02d%s\3%s%s",
  189. hash(msg->user), msg->nick, hash(msg->params[0]), msg->params[0],
  190. - (msg->params[1] ? ": " : ""), (msg->params[1] ?: "")
  191. + (msg->params[1] ? ": " : ""),
  192. + (msg->params[1] ? msg->params[1] : "")
  193. );
  194. logFormat(
  195. id, tagTime(msg), "%s leaves %s%s%s",
  196. msg->nick, msg->params[0],
  197. - (msg->params[1] ? ": " : ""), (msg->params[1] ?: "")
  198. + (msg->params[1] ? ": " : ""),
  199. + (msg->params[1] ? msg->params[1] : "")
  200. );
  201. }
  202. @@ -410,12 +412,14 @@ static void handleKick(struct Message *msg) {
  203. hash(msg->user), msg->nick,
  204. completeColor(id, msg->params[1]), msg->params[1],
  205. hash(msg->params[0]), msg->params[0],
  206. - (msg->params[2] ? ": " : ""), (msg->params[2] ?: "")
  207. + (msg->params[2] ? ": " : ""),
  208. + (msg->params[2] ? msg->params[2] : "")
  209. );
  210. logFormat(
  211. id, tagTime(msg), "%s kicks %s out of %s%s%s",
  212. msg->nick, msg->params[1], msg->params[0],
  213. - (msg->params[2] ? ": " : ""), (msg->params[2] ?: "")
  214. + (msg->params[2] ? ": " : ""),
  215. + (msg->params[2] ? msg->params[2] : "")
  216. );
  217. completeRemove(id, msg->params[1]);
  218. if (kicked) completeClear(id);
  219. @@ -466,13 +470,15 @@ static void handleQuit(struct Message *msg) {
  220. id, heat, tagTime(msg),
  221. "\3%02d%s\3\tleaves%s%s",
  222. hash(msg->user), msg->nick,
  223. - (msg->params[0] ? ": " : ""), (msg->params[0] ?: "")
  224. + (msg->params[0] ? ": " : ""),
  225. + (msg->params[0] ? msg->params[0] : "")
  226. );
  227. if (id == Network) continue;
  228. logFormat(
  229. id, tagTime(msg), "%s leaves%s%s",
  230. msg->nick,
  231. - (msg->params[0] ? ": " : ""), (msg->params[0] ?: "")
  232. + (msg->params[0] ? ": " : ""),
  233. + (msg->params[0] ? msg->params[0] : "")
  234. );
  235. }
  236. completeRemove(None, msg->nick);
  237. @@ -734,7 +740,7 @@ static void handleReplyUserModeIs(struct Message *msg) {
  238. if (*ch == '+') continue;
  239. const char *name = UserModes[(byte)*ch];
  240. ptr = seprintf(
  241. - ptr, end, ", +%c%s%s", *ch, (name ? " " : ""), (name ?: "")
  242. + ptr, end, ", +%c%s%s", *ch, (name ? " " : ""), (name ? name : "")
  243. );
  244. }
  245. uiFormat(
  246. @@ -774,13 +780,13 @@ static void handleReplyChannelModeIs(struct Message *msg) {
  247. assert(param < ParamCap);
  248. ptr = seprintf(
  249. ptr, end, ", +%c%s%s %s",
  250. - *ch, (name ? " " : ""), (name ?: ""),
  251. + *ch, (name ? " " : ""), (name ? name : ""),
  252. msg->params[param++]
  253. );
  254. } else {
  255. ptr = seprintf(
  256. ptr, end, ", +%c%s%s",
  257. - *ch, (name ? " " : ""), (name ?: "")
  258. + *ch, (name ? " " : ""), (name ? name : "")
  259. );
  260. }
  261. }
  262. @@ -807,7 +813,7 @@ static void handleMode(struct Message *msg) {
  263. hash(msg->user), msg->nick,
  264. (set ? "" : "un"),
  265. self.color, msg->params[0],
  266. - set["-+"], *ch, (name ? " " : ""), (name ?: "")
  267. + set["-+"], *ch, (name ? " " : ""), (name ? name : "")
  268. );
  269. }
  270. return;
  271. @@ -964,7 +970,7 @@ static void handleErrorBanListFull(struct Message *msg) {
  272. require(msg, false, 4);
  273. uiFormat(
  274. idFor(msg->params[1]), Warm, tagTime(msg),
  275. - "%s", (msg->params[4] ?: msg->params[3])
  276. + "%s", (msg->params[4] ? msg->params[4] : msg->params[3])
  277. );
  278. }
  279. @@ -1069,14 +1075,15 @@ static void handleReplyWhoisIdle(struct Message *msg) {
  280. }
  281. }
  282. char signon[sizeof("0000-00-00 00:00:00")];
  283. - time_t time = strtol((msg->params[3] ?: ""), NULL, 10);
  284. + time_t time = (msg->params[3] ? strtol(msg->params[3], NULL, 10) : 0);
  285. strftime(signon, sizeof(signon), "%F %T", localtime(&time));
  286. uiFormat(
  287. Network, Warm, tagTime(msg),
  288. "\3%02d%s\3\tis idle for %lu %s%s%s%s",
  289. completeColor(Network, msg->params[1]), msg->params[1],
  290. idle, unit, (idle != 1 ? "s" : ""),
  291. - (msg->params[3] ? ", signed on " : ""), (msg->params[3] ? signon : "")
  292. + (msg->params[3] ? ", signed on " : ""),
  293. + (msg->params[3] ? signon : "")
  294. );
  295. }
  296. @@ -1111,7 +1118,9 @@ static void handleReplyWhoisGeneric(struct Message *msg) {
  297. Network, Warm, tagTime(msg),
  298. "\3%02d%s\3\t%s%s%s",
  299. completeColor(Network, msg->params[1]), msg->params[1],
  300. - msg->params[2], (msg->params[3] ? " " : ""), (msg->params[3] ?: "")
  301. + msg->params[2],
  302. + (msg->params[3] ? " " : ""),
  303. + (msg->params[3] ? msg->params[3] : "")
  304. );
  305. }
  306. @@ -1186,7 +1195,7 @@ static bool isMention(const struct Message *msg) {
  307. const char *match = msg->params[1];
  308. while (NULL != (match = strstr(match, self.nick))) {
  309. char a = (match > msg->params[1] ? match[-1] : ' ');
  310. - char b = (match[len] ?: ' ');
  311. + char b = (match[len] ? match[len] : ' ');
  312. if ((isspace(a) || ispunct(a)) && (isspace(b) || ispunct(b))) {
  313. return true;
  314. }
  315. diff --git a/input.c b/input.c
  316. index f3813c4..820bf3c 100644
  317. --- a/input.c
  318. +++ b/input.c
  319. @@ -417,7 +417,6 @@ static void keyCode(int code) {
  320. break; case KeyMetaGt: windowScroll(ScrollAll, -1);
  321. break; case KeyMetaLt: windowScroll(ScrollAll, +1);
  322. - break; case KeyMeta0 ... KeyMeta9: windowShow(code - KeyMeta0);
  323. break; case KeyMetaA: windowAuto();
  324. break; case KeyMetaB: error = editFn(edit, EditPrevWord);
  325. break; case KeyMetaD: error = editFn(edit, EditDeleteNextWord);
  326. @@ -448,6 +447,12 @@ static void keyCode(int code) {
  327. break; case KEY_SEND: windowScroll(ScrollAll, -1);
  328. break; case KEY_SHOME: windowScroll(ScrollAll, +1);
  329. break; case KEY_UP: windowScroll(ScrollOne, +1);
  330. +
  331. + break; default: {
  332. + if (code >= KeyMeta0 && code <= KeyMeta9) {
  333. + windowShow(code - KeyMeta0);
  334. + }
  335. + }
  336. }
  337. if (error) err(EX_OSERR, "editFn");
  338. }
  339. diff --git a/url.c b/url.c
  340. index 219a83c..9c721e0 100644
  341. --- a/url.c
  342. +++ b/url.c
  343. @@ -249,7 +249,7 @@ int urlSave(FILE *file) {
  344. if (!url->url) continue;
  345. int error = 0
  346. || writeString(file, idNames[url->id])
  347. - || writeString(file, (url->nick ?: ""))
  348. + || writeString(file, (url->nick ? url->nick : ""))
  349. || writeString(file, url->url);
  350. if (error) return error;
  351. }
  352. diff --git a/window.c b/window.c
  353. index ee0911f..d7bc472 100644
  354. --- a/window.c
  355. +++ b/window.c
  356. @@ -220,7 +220,7 @@ static size_t windowTop(const struct Window *window) {
  357. }
  358. static size_t windowBottom(const struct Window *window) {
  359. - size_t bottom = BufferCap - (window->scroll ?: 1);
  360. + size_t bottom = BufferCap - (window->scroll ? window->scroll : 1);
  361. if (window->scroll) bottom -= SplitLines + MarkerLines;
  362. return bottom;
  363. }
  364. --
  365. 2.34.1