Fix clang -Wextra except -Wunused-parameter.
Patch status: merged
Patch by Peter Boström
Long description:
Cleared all warnings that occur when passing
CFLAGS="-Wall -Wextra -Wno-unused-parameter" to make using clang 3.3 on
Linux x86-64.
To apply this patch, use:
curl http://cr.i3wm.org/patch/359/raw.patch | git am
b/i3-config-wizard/main.c
| 38 |
@@ -299,7 +299,7 @@ static char *rewrite_binding(const char *input) {
|
| 39 |
|
| 40 |
/* The "<=" operator is intentional: We also handle the terminating 0-byte
|
| 41 |
* explicitly by looking for an 'end' token. */
|
| 42 |
- while ((walk - input) <= len) {
|
| 43 |
+ while ((size_t)(walk - input) <= len) {
|
| 44 |
/* Skip whitespace before every token, newlines are relevant since they
|
| 45 |
* separate configuration directives. */
|
| 46 |
while ((*walk == ' ' || *walk == '\t') && *walk != '\0')
|
b/i3-msg/main.c
| 51 |
@@ -135,7 +135,7 @@ yajl_callbacks reply_callbacks = {
|
| 52 |
int main(int argc, char *argv[]) {
|
| 53 |
socket_path = getenv("I3SOCK");
|
| 54 |
int o, option_index = 0;
|
| 55 |
- int message_type = I3_IPC_MESSAGE_TYPE_COMMAND;
|
| 56 |
+ uint32_t message_type = I3_IPC_MESSAGE_TYPE_COMMAND;
|
| 57 |
char *payload = NULL;
|
| 58 |
bool quiet = false;
|
| 59 |
|
b/i3-nagbar/main.c
| 64 |
@@ -467,7 +467,7 @@ int main(int argc, char *argv[]) {
|
| 65 |
uint32_t top_end_x;
|
| 66 |
uint32_t bottom_start_x;
|
| 67 |
uint32_t bottom_end_x;
|
| 68 |
- } __attribute__((__packed__)) strut_partial = {0,};
|
| 69 |
+ } __attribute__((__packed__)) strut_partial = {};
|
| 70 |
|
| 71 |
strut_partial.top = font.height + 6;
|
| 72 |
strut_partial.top_start_x = 0;
|
b/i3bar/src/child.c
| 77 |
@@ -28,7 +28,7 @@
|
| 78 |
#include "common.h"
|
| 79 |
|
| 80 |
/* Global variables for child_*() */
|
| 81 |
-i3bar_child child = { 0 };
|
| 82 |
+i3bar_child child = {};
|
| 83 |
|
| 84 |
/* stdin- and sigchild-watchers */
|
| 85 |
ev_io *stdin_io;
|
b/i3bar/src/xcb.c
| 90 |
@@ -417,7 +417,7 @@ void handle_button(xcb_button_press_event_t *event) {
|
| 91 |
const size_t len = namelen + strlen("workspace \"\"") + 1;
|
| 92 |
char *buffer = scalloc(len+num_quotes);
|
| 93 |
strncpy(buffer, "workspace \"", strlen("workspace \""));
|
| 94 |
- int inpos, outpos;
|
| 95 |
+ size_t inpos, outpos;
|
| 96 |
for (inpos = 0, outpos = strlen("workspace \"");
|
| 97 |
inpos < namelen;
|
| 98 |
inpos++, outpos++) {
|
| 99 |
@@ -1524,7 +1524,7 @@ void reconfig_windows(bool redraw_bars) {
|
| 100 |
uint32_t top_end_x;
|
| 101 |
uint32_t bottom_start_x;
|
| 102 |
uint32_t bottom_end_x;
|
| 103 |
- } __attribute__((__packed__)) strut_partial = {0,};
|
| 104 |
+ } __attribute__((__packed__)) strut_partial = {};
|
| 105 |
switch (config.position) {
|
| 106 |
case POS_NONE:
|
| 107 |
break;
|
| 108 |
@@ -1717,7 +1717,7 @@ void draw_bars(bool unhide) {
|
| 109 |
outputs_walk->bargc,
|
| 110 |
MAX(0, (int16_t)(statusline_width - outputs_walk->rect.w + 4)), 0,
|
| 111 |
MAX(0, (int16_t)(outputs_walk->rect.w - statusline_width - traypx - 4)), 3,
|
| 112 |
- MIN(outputs_walk->rect.w - traypx - 4, statusline_width), font.height + 2);
|
| 113 |
+ MIN(outputs_walk->rect.w - traypx - 4, (int)statusline_width), font.height + 2);
|
| 114 |
}
|
| 115 |
|
| 116 |
if (!config.disable_ws) {
|
b/include/randr.h
| 121 |
@@ -84,7 +84,7 @@ Output *get_output_by_name(const char *name);
|
| 122 |
* if there is no output which contains these coordinates.
|
| 123 |
*
|
| 124 |
*/
|
| 125 |
-Output *get_output_containing(int x, int y);
|
| 126 |
+Output *get_output_containing(unsigned int x, unsigned int y);
|
| 127 |
|
| 128 |
/*
|
| 129 |
* In contained_by_output, we check if any active output contains part of the container.
|
b/libi3/get_exe_path.c
| 134 |
@@ -30,7 +30,7 @@ char *get_exe_path(const char *argv0) {
|
| 135 |
#endif
|
| 136 |
ssize_t linksize;
|
| 137 |
|
| 138 |
- while ((linksize = readlink(exepath, destpath, destpath_size)) == destpath_size) {
|
| 139 |
+ while ((linksize = readlink(exepath, destpath, destpath_size)) == (ssize_t)destpath_size) {
|
| 140 |
destpath_size = destpath_size * 2;
|
| 141 |
destpath = srealloc(destpath, destpath_size);
|
| 142 |
}
|
b/libi3/ipc_send_message.c
| 147 |
@@ -33,7 +33,7 @@ int ipc_send_message(int sockfd, const uint32_t message_size,
|
| 148 |
.type = message_type
|
| 149 |
};
|
| 150 |
|
| 151 |
- int sent_bytes = 0;
|
| 152 |
+ size_t sent_bytes = 0;
|
| 153 |
int n = 0;
|
| 154 |
|
| 155 |
/* This first loop is basically unnecessary. No operating system has
|
b/src/assignments.c
| 160 |
@@ -28,7 +28,7 @@ void run_assignments(i3Window *window) {
|
| 161 |
continue;
|
| 162 |
|
| 163 |
bool skip = false;
|
| 164 |
- for (int c = 0; c < window->nr_assignments; c++) {
|
| 165 |
+ for (uint32_t c = 0; c < window->nr_assignments; c++) {
|
| 166 |
if (window->ran_assignments[c] != current)
|
| 167 |
continue;
|
| 168 |
|
b/src/click.c
| 173 |
@@ -147,15 +147,15 @@ static bool tiling_resize(Con *con, xcb_button_press_event_t *event, const click
|
| 174 |
return tiling_resize_for_border(con, BORDER_TOP, event);
|
| 175 |
}
|
| 176 |
|
| 177 |
- if (event->event_x >= 0 && event->event_x <= bsr.x &&
|
| 178 |
- event->event_y >= bsr.y && event->event_y <= con->rect.height + bsr.height)
|
| 179 |
+ if (event->event_x >= 0 && event->event_x <= (int32_t)bsr.x &&
|
| 180 |
+ event->event_y >= (int32_t)bsr.y && event->event_y <= (int32_t)(con->rect.height + bsr.height))
|
| 181 |
return tiling_resize_for_border(con, BORDER_LEFT, event);
|
| 182 |
|
| 183 |
- if (event->event_x >= (con->window_rect.x + con->window_rect.width) &&
|
| 184 |
- event->event_y >= bsr.y && event->event_y <= con->rect.height + bsr.height)
|
| 185 |
+ if (event->event_x >= (int32_t)(con->window_rect.x + con->window_rect.width) &&
|
| 186 |
+ event->event_y >= (int32_t)bsr.y && event->event_y <= (int32_t)(con->rect.height + bsr.height))
|
| 187 |
return tiling_resize_for_border(con, BORDER_RIGHT, event);
|
| 188 |
|
| 189 |
- if (event->event_y >= (con->window_rect.y + con->window_rect.height))
|
| 190 |
+ if (event->event_y >= (int32_t)(con->window_rect.y + con->window_rect.height))
|
| 191 |
return tiling_resize_for_border(con, BORDER_BOTTOM, event);
|
| 192 |
|
| 193 |
return false;
|
b/src/commands_parser.c
| 198 |
@@ -232,7 +232,7 @@ struct CommandResult *parse_command(const char *input) {
|
| 199 |
|
| 200 |
/* The "<=" operator is intentional: We also handle the terminating 0-byte
|
| 201 |
* explicitly by looking for an 'end' token. */
|
| 202 |
- while ((walk - input) <= len) {
|
| 203 |
+ while ((size_t)(walk - input) <= len) {
|
| 204 |
/* skip whitespace and newlines before every token */
|
| 205 |
while ((*walk == ' ' || *walk == '\t' ||
|
| 206 |
*walk == '\r' || *walk == '\n') && *walk != '\0')
|
b/src/config.c
| 211 |
@@ -175,7 +175,7 @@ void grab_all_keys(xcb_connection_t *conn, bool bind_mode_switch) {
|
| 212 |
}
|
| 213 |
|
| 214 |
xcb_keycode_t *walk = bind->translated_to;
|
| 215 |
- for (int i = 0; i < bind->number_keycodes; i++)
|
| 216 |
+ for (uint32_t i = 0; i < bind->number_keycodes; i++)
|
| 217 |
grab_keycode_for_binding(conn, bind, *walk++);
|
| 218 |
}
|
| 219 |
}
|
b/src/config_parser.c
| 224 |
@@ -159,7 +159,7 @@ static const char *get_string(const char *identifier) {
|
| 225 |
return NULL;
|
| 226 |
}
|
| 227 |
|
| 228 |
-static const long get_long(const char *identifier) {
|
| 229 |
+static long get_long(const char *identifier) {
|
| 230 |
for (int c = 0; c < 10; c++) {
|
| 231 |
if (stack[c].identifier == NULL)
|
| 232 |
break;
|
| 233 |
@@ -346,7 +346,7 @@ struct ConfigResult *parse_config(const char *input, struct context *context) {
|
| 234 |
|
| 235 |
/* The "<=" operator is intentional: We also handle the terminating 0-byte
|
| 236 |
* explicitly by looking for an 'end' token. */
|
| 237 |
- while ((walk - input) <= len) {
|
| 238 |
+ while ((size_t)(walk - input) <= len) {
|
| 239 |
/* Skip whitespace before every token, newlines are relevant since they
|
| 240 |
* separate configuration directives. */
|
| 241 |
while ((*walk == ' ' || *walk == '\t') && *walk != '\0')
|
| 242 |
@@ -585,7 +585,7 @@ struct ConfigResult *parse_config(const char *input, struct context *context) {
|
| 243 |
y(map_close);
|
| 244 |
|
| 245 |
/* Skip the rest of this line, but continue parsing. */
|
| 246 |
- while ((walk - input) <= len && *walk != '\n')
|
| 247 |
+ while ((size_t)(walk - input) <= len && *walk != '\n')
|
| 248 |
walk++;
|
| 249 |
|
| 250 |
free(position);
|
b/src/display_version.c
| 255 |
@@ -135,7 +135,7 @@ void display_running_version(void) {
|
| 256 |
|
| 257 |
sasprintf(&exepath, "/proc/%d/exe", getpid());
|
| 258 |
|
| 259 |
- while ((linksize = readlink(exepath, destpath, destpath_size)) == destpath_size) {
|
| 260 |
+ while ((linksize = readlink(exepath, destpath, destpath_size)) == (ssize_t)destpath_size) {
|
| 261 |
destpath_size = destpath_size * 2;
|
| 262 |
destpath = srealloc(destpath, destpath_size);
|
| 263 |
}
|
| 264 |
@@ -151,7 +151,7 @@ void display_running_version(void) {
|
| 265 |
free(exepath);
|
| 266 |
sasprintf(&exepath, "/proc/%s/exe", pid_from_atom);
|
| 267 |
|
| 268 |
- while ((linksize = readlink(exepath, destpath, destpath_size)) == destpath_size) {
|
| 269 |
+ while ((linksize = readlink(exepath, destpath, destpath_size)) == (ssize_t)destpath_size) {
|
| 270 |
destpath_size = destpath_size * 2;
|
| 271 |
destpath = srealloc(destpath, destpath_size);
|
| 272 |
}
|
b/src/fake_outputs.c
| 277 |
@@ -18,7 +18,7 @@ static int num_screens;
|
| 278 |
* Looks in outputs for the Output whose start coordinates are x, y
|
| 279 |
*
|
| 280 |
*/
|
| 281 |
-static Output *get_screen_at(int x, int y) {
|
| 282 |
+static Output *get_screen_at(unsigned int x, unsigned int y) {
|
| 283 |
Output *output;
|
| 284 |
TAILQ_FOREACH(output, &outputs, outputs)
|
| 285 |
if (output->rect.x == x && output->rect.y == y)
|
b/src/floating.c
| 290 |
@@ -535,12 +535,12 @@ void floating_resize_window(Con *con, const bool proportional,
|
| 291 |
* a bitmask of the nearest borders (BORDER_LEFT, BORDER_RIGHT, …) */
|
| 292 |
border_t corner = 0;
|
| 293 |
|
| 294 |
- if (event->event_x <= (con->rect.width / 2))
|
| 295 |
+ if (event->event_x <= (int16_t)(con->rect.width / 2))
|
| 296 |
corner |= BORDER_LEFT;
|
| 297 |
else corner |= BORDER_RIGHT;
|
| 298 |
|
| 299 |
int cursor = 0;
|
| 300 |
- if (event->event_y <= (con->rect.height / 2)) {
|
| 301 |
+ if (event->event_y <= (int16_t)(con->rect.height / 2)) {
|
| 302 |
corner |= BORDER_TOP;
|
| 303 |
cursor = (corner & BORDER_LEFT) ?
|
| 304 |
XCURSOR_CURSOR_TOP_LEFT_CORNER : XCURSOR_CURSOR_TOP_RIGHT_CORNER;
|
b/src/handlers.c
| 309 |
@@ -1034,7 +1034,7 @@ static void property_notify(uint8_t state, xcb_window_t window, xcb_atom_t atom)
|
| 310 |
struct property_handler_t *handler = NULL;
|
| 311 |
xcb_get_property_reply_t *propr = NULL;
|
| 312 |
|
| 313 |
- for (int c = 0; c < sizeof(property_handlers) / sizeof(struct property_handler_t); c++) {
|
| 314 |
+ for (size_t c = 0; c < sizeof(property_handlers) / sizeof(struct property_handler_t); c++) {
|
| 315 |
if (property_handlers[c].atom != atom)
|
| 316 |
continue;
|
| 317 |
|
b/src/log.c
| 322 |
@@ -250,7 +250,7 @@ static void vlog(const bool print, const char *fmt, va_list args) {
|
| 323 |
|
| 324 |
/* If there is no space for the current message in the ringbuffer, we
|
| 325 |
* need to wrap and write to the beginning again. */
|
| 326 |
- if (len >= (logbuffer_size - (logwalk - logbuffer))) {
|
| 327 |
+ if (len >= (size_t)(logbuffer_size - (logwalk - logbuffer))) {
|
| 328 |
loglastwrap = logwalk;
|
| 329 |
logwalk = logbuffer + sizeof(i3_shmlog_header);
|
| 330 |
store_log_markers();
|
b/src/manage.c
| 335 |
@@ -252,7 +252,7 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
|
| 336 |
cwindow->dock = W_DOCK_BOTTOM;
|
| 337 |
} else {
|
| 338 |
DLOG("Ignoring invalid reserved edges (_NET_WM_STRUT_PARTIAL), using position as fallback:\n");
|
| 339 |
- if (geom->y < (search_at->rect.height / 2)) {
|
| 340 |
+ if (geom->y < (int16_t)(search_at->rect.height / 2)) {
|
| 341 |
DLOG("geom->y = %d < rect.height / 2 = %d, it is a top dock client\n",
|
| 342 |
geom->y, (search_at->rect.height / 2));
|
| 343 |
cwindow->dock = W_DOCK_TOP;
|
b/src/randr.c
| 348 |
@@ -77,7 +77,7 @@ Output *get_first_output(void) {
|
| 349 |
* if there is no output which contains these coordinates.
|
| 350 |
*
|
| 351 |
*/
|
| 352 |
-Output *get_output_containing(int x, int y) {
|
| 353 |
+Output *get_output_containing(unsigned int x, unsigned int y) {
|
| 354 |
Output *output;
|
| 355 |
TAILQ_FOREACH(output, &outputs, outputs) {
|
| 356 |
if (!output->active)
|
b/src/util.c
| 361 |
@@ -224,7 +224,7 @@ char *store_restart_layout(void) {
|
| 362 |
return NULL;
|
| 363 |
}
|
| 364 |
|
| 365 |
- int written = 0;
|
| 366 |
+ size_t written = 0;
|
| 367 |
while (written < length) {
|
| 368 |
int n = write(fd, payload + written, length - written);
|
| 369 |
/* TODO: correct error-handling */
|
| 370 |
@@ -242,9 +242,9 @@ char *store_restart_layout(void) {
|
| 371 |
}
|
| 372 |
written += n;
|
| 373 |
#if YAJL_MAJOR >= 2
|
| 374 |
- printf("written: %d of %zd\n", written, length);
|
| 375 |
+ DLOG("written: %zd of %zd\n", written, length);
|
| 376 |
#else
|
| 377 |
- printf("written: %d of %d\n", written, length);
|
| 378 |
+ DLOG("written: %d of %d\n", written, length);
|
| 379 |
#endif
|
| 380 |
}
|
| 381 |
close(fd);
|
b/src/window.c
| 386 |
@@ -32,7 +32,7 @@ void window_update_class(i3Window *win, xcb_get_property_reply_t *prop, bool bef
|
| 387 |
FREE(win->class_class);
|
| 388 |
|
| 389 |
win->class_instance = sstrdup(new_class);
|
| 390 |
- if ((strlen(new_class) + 1) < xcb_get_property_value_length(prop))
|
| 391 |
+ if ((strlen(new_class) + 1) < (size_t)xcb_get_property_value_length(prop))
|
| 392 |
win->class_class = sstrdup(new_class + strlen(new_class) + 1);
|
| 393 |
else win->class_class = NULL;
|
| 394 |
LOG("WM_CLASS changed to %s (instance), %s (class)\n",
|
b/src/xinerama.c
| 399 |
@@ -22,7 +22,7 @@ static int num_screens;
|
| 400 |
* Looks in outputs for the Output whose start coordinates are x, y
|
| 401 |
*
|
| 402 |
*/
|
| 403 |
-static Output *get_screen_at(int x, int y) {
|
| 404 |
+static Output *get_screen_at(unsigned int x, unsigned int y) {
|
| 405 |
Output *output;
|
| 406 |
TAILQ_FOREACH(output, &outputs, outputs)
|
| 407 |
if (output->rect.x == x && output->rect.y == y)
|