- don't free user-supplied string (via -e)
[oweals/busybox.git] / libbb / process_escape_sequence.c
index 1b7b6d190ec8ffba159330c8a0d41a0e66a73ee2..4d03bd61f34641db39c956e6deec5045dd494e4b 100644 (file)
@@ -5,26 +5,9 @@
  * Copyright (C) Manuel Novoa III <mjn3@codepoet.org>
  * and Vladimir Oleynik <dzo@simtreas.ru>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include <stdio.h>
-#include <limits.h>
-#include <ctype.h>
 #include "libbb.h"
 
 #define WANT_HEX_ESCAPES 1
@@ -33,9 +16,9 @@
 #undef _tolower
 #define _tolower(X) ((X)|((char) 0x20))
 
-char bb_process_escape_sequence(const char **ptr)
+char FAST_FUNC bb_process_escape_sequence(const char **ptr)
 {
-       static const char charmap[] = {
+       static const char charmap[] ALIGN1 = {
                'a',  'b',  'f',  'n',  'r',  't',  'v',  '\\', 0,
                '\a', '\b', '\f', '\n', '\r', '\t', '\v', '\\', '\\' };
 
@@ -60,10 +43,10 @@ char bb_process_escape_sequence(const char **ptr)
 #endif
 
        do {
-               d = (unsigned int)(*q - '0');
+               d = (unsigned char)(*q) - '0';
 #ifdef WANT_HEX_ESCAPES
                if (d >= 10) {
-                       d = ((unsigned int)(_tolower(*q) - 'a')) + 10;
+                       d = (unsigned char)(_tolower(*q)) - 'a' + 10;
                }
 #endif
 
@@ -94,19 +77,10 @@ char bb_process_escape_sequence(const char **ptr)
                                break;
                        }
                } while (*++p);
-               n = *(p+(sizeof(charmap)/2));
+               n = *(p + (sizeof(charmap)/2));
        }
 
        *ptr = q;
 
        return (char) n;
 }
-
-/* END CODE */
-/*
-Local Variables:
-c-file-style: "linux"
-c-basic-offset: 4
-tab-width: 4
-End:
-*/