Sufficiently new versions of GCC treat string literals as "const char *" by default. This means that several places that assign, return, or initialize char* from a string literal generates a warning:
xrandr.c:54:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:55:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:56:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:57:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:58:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:61:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:62:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:63:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:64:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:65:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:69:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:70:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:71:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:72:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:73:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:74:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:80:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:81:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:82:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:83:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:84:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:85:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:86:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:87:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:88:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:189:2: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:193:5: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:202:2: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:204:2: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:206:2: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:208:2: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:210:5: warning: return discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:359:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:360:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:361:5: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:593:23: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1189:28: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1191:28: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1587:39: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1588:30: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1589:38: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1590:48: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1591:42: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:1592:25: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:2544:28: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:2546:28: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:2585:28: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default] xrandr.c:3228:17: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default] Fix as many of these as possible. This introduces one problem: XRRSetCrtcTransform takes a non-const char* filter parameter even though it doesn't actually modify the string. Instead of trying to work around that, just live with the warning for now: xrandr.c:1459:9: warning: passing argument 4 of ‘XRRSetCrtcTransform’ discards ‘const’ qualifier from pointer target type [enabled by default] /X/include/X11/extensions/Xrandr.h:383:1: note: expected ‘char *’ but argument is of type ‘const char *’ Signed-off-by: Aaron Plattner <[email protected]> --- xrandr.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/xrandr.c b/xrandr.c index 46d133f..d05737e 100644 --- a/xrandr.c +++ b/xrandr.c @@ -50,14 +50,14 @@ static Bool properties = False; static Bool grab_server = True; static Bool no_primary = False; -static char *direction[5] = { +static const char *direction[5] = { "normal", "left", "inverted", "right", "\n"}; -static char *reflections[5] = { +static const char *reflections[5] = { "normal", "x", "y", @@ -65,7 +65,7 @@ static char *reflections[5] = { "\n"}; /* subpixel order */ -static char *order[6] = { +static const char *order[6] = { "unknown", "horizontal rgb", "horizontal bgr", @@ -74,7 +74,7 @@ static char *order[6] = { "no subpixels"}; static const struct { - char *string; + const char *string; unsigned long flag; } mode_flags[] = { { "+HSync", RR_HSyncPositive }, @@ -180,7 +180,7 @@ static inline double dmin (double x, double y) return x < y ? x : y; } -static char * +static const char * rotation_name (Rotation rotation) { int i; @@ -193,7 +193,7 @@ rotation_name (Rotation rotation) return "invalid rotation"; } -static char * +static const char * reflection_name (Rotation rotation) { rotation &= (RR_Reflect_X|RR_Reflect_Y); @@ -270,7 +270,7 @@ typedef struct _output_prop output_prop_t; struct _transform { XTransform transform; - char *filter; + const char *filter; int nparams; XFixed *params; }; @@ -355,7 +355,7 @@ struct _umode { name_t name; }; -static char *connection[3] = { +static const char *connection[3] = { "connected", "disconnected", "unknown connection"}; @@ -598,11 +598,12 @@ init_transform (transform_t *transform) static void set_transform (transform_t *dest, XTransform *transform, - char *filter, + const char *filter, XFixed *params, int nparams) { dest->transform = *transform; + /* note: this string is leaked */ dest->filter = strdup (filter); dest->nparams = nparams; dest->params = malloc (nparams * sizeof (XFixed)); @@ -1581,7 +1582,7 @@ static void _X_NORETURN panic (Status s, crtc_t *crtc) { int c = crtc->crtc.index; - char *message; + const char *message; switch (s) { case RRSetConfigSuccess: message = "succeeded"; break; @@ -3225,7 +3226,7 @@ main (int argc, char **argv) printf ("\t%s: %s%s\n", XGetAtomName (dpy, props[j]), prop, bytes_after ? "..." : ""); } else { - char *type = actual_type ? XGetAtomName (dpy, actual_type) : "none"; + const char *type = actual_type ? XGetAtomName (dpy, actual_type) : "none"; printf ("\t%s: %s(%d) (format %d items %d) ????\n", XGetAtomName (dpy, props[j]), type, (int)actual_type, actual_format, (int)nitems); -- 1.7.9.5 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
