diff --git a/ChangeLog b/ChangeLog
index 32dd592..3cecbd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-12-27  Dmitry V. Levin <ldv@altlinux.org>
+
+	Add const qualifier to xlookup() return value
+
+	* defs.h (xlookup): Add const qualifier to return value.
+	* desc.c (sprintflags): Likewise.
+	* process.c (printpriv): Update xlookup() use.
+	* signal.c (sprintsigmask): Add const qualifier to first argument and return value.
+	* util.c (xlookup): Add const qualifier to return value.
+	(printxval): Update xlookup() use.
+
 2006-12-21  Dmitry V. Levin <ldv@altlinux.org>
 
 	Move counts code to separate file.
diff --git a/defs.h b/defs.h
index beef2a7..8d89385 100644
--- a/defs.h
+++ b/defs.h
@@ -424,7 +424,7 @@
 enum bitness_t { BITNESS_CURRENT = 0, BITNESS_32 };
 
 extern int set_personality P((int personality));
-extern char *xlookup P((const struct xlat *, int));
+extern const char *xlookup P((const struct xlat *, int));
 extern struct tcb *alloc_tcb P((int, int));
 extern struct tcb *pid2tcb P((int));
 extern void droptcb P((struct tcb *));
diff --git a/desc.c b/desc.c
index 6e534da..29f8a95 100644
--- a/desc.c
+++ b/desc.c
@@ -242,13 +242,11 @@
 }
 #endif
 
-static char *
-sprintflags(xlat, flags)
-const struct xlat *xlat;
-int flags;
+static const char *
+sprintflags(const struct xlat *xlat, int flags)
 {
 	static char outstr[1024];
-	char *sep;
+	const char *sep;
 
 	strcpy(outstr, "flags ");
 	sep = "";
diff --git a/process.c b/process.c
index 8e25640..d478293 100644
--- a/process.c
+++ b/process.c
@@ -1596,11 +1596,7 @@
 
 
 static void
-printpriv(tcp, addr, len, opt)
-struct tcb *tcp;
-long addr;
-int len;
-const struct xlat *opt;
+printpriv(struct tcb *tcp, long addr, int len, const struct xlat *opt)
 {
 	priv_t buf [128];
 	int max = verbose (tcp) ? sizeof buf / sizeof buf [0] : 10;
@@ -1619,7 +1615,7 @@
 	tprintf ("[");
 
 	for (i = 0; i < len; ++i) {
-		char *t, *p;
+		const char *t, *p;
 
 		if (i) tprintf (", ");
 
diff --git a/signal.c b/signal.c
index 41f9ad4..d23727d 100644
--- a/signal.c
+++ b/signal.c
@@ -313,18 +313,16 @@
 #define copy_sigset(tcp, addr, s) copy_sigset_len(tcp, addr, s, sizeof(sigset_t))
 #endif
 
-static char *
-sprintsigmask(s, mask, rt)
-char *s;
-sigset_t *mask;
-int rt; /* set might include realtime sigs */
+static const char *
+sprintsigmask(const char *str, sigset_t *mask, int rt)
+/* set might include realtime sigs */
 {
 	int i, nsigs;
 	int maxsigs;
-	char *format;
+	char *format, *s;
 	static char outstr[8 * sizeof(sigset_t) * 8];
 
-	strcpy(outstr, s);
+	strcpy(outstr, str);
 	s = outstr + strlen(outstr);
 	nsigs = 0;
 	maxsigs = nsignals;
diff --git a/util.c b/util.c
index 470cec7..06162f4 100644
--- a/util.c
+++ b/util.c
@@ -231,10 +231,8 @@
 	tv->tv_usec %= 1000000;
 }
 
-char *
-xlookup(xlat, val)
-const struct xlat *xlat;
-int val;
+const char *
+xlookup(const struct xlat *xlat, int val)
 {
 	for (; xlat->str != NULL; xlat++)
 		if (xlat->val == val)
@@ -246,12 +244,9 @@
  * Print entry in struct xlat table, if there.
  */
 void
-printxval(xlat, val, dflt)
-const struct xlat *xlat;
-int val;
-const char *dflt;
+printxval(const struct xlat *xlat, int val, const char *dflt)
 {
-	char *str = xlookup(xlat, val);
+	const char *str = xlookup(xlat, val);
 
 	if (str)
 		tprintf("%s", str);
