Annotation of elwix/tools/uboot_mkimage/lib/libfdt/fdt_strerror.c, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * libfdt - Flat Device Tree manipulation
                      3:  * Copyright (C) 2006 David Gibson, IBM Corporation.
                      4:  *
                      5:  * libfdt is dual licensed: you can use it either under the terms of
                      6:  * the GPL, or the BSD license, at your option.
                      7:  *
                      8:  *  a) This library is free software; you can redistribute it and/or
                      9:  *     modify it under the terms of the GNU General Public License as
                     10:  *     published by the Free Software Foundation; either version 2 of the
                     11:  *     License, or (at your option) any later version.
                     12:  *
                     13:  *     This library is distributed in the hope that it will be useful,
                     14:  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:  *     GNU General Public License for more details.
                     17:  *
                     18:  *     You should have received a copy of the GNU General Public
                     19:  *     License along with this library; if not, write to the Free
                     20:  *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
                     21:  *     MA 02110-1301 USA
                     22:  *
                     23:  * Alternatively,
                     24:  *
                     25:  *  b) Redistribution and use in source and binary forms, with or
                     26:  *     without modification, are permitted provided that the following
                     27:  *     conditions are met:
                     28:  *
                     29:  *     1. Redistributions of source code must retain the above
                     30:  *        copyright notice, this list of conditions and the following
                     31:  *        disclaimer.
                     32:  *     2. Redistributions in binary form must reproduce the above
                     33:  *        copyright notice, this list of conditions and the following
                     34:  *        disclaimer in the documentation and/or other materials
                     35:  *        provided with the distribution.
                     36:  *
                     37:  *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
                     38:  *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
                     39:  *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                     40:  *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     41:  *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                     42:  *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
                     43:  *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     44:  *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
                     45:  *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     46:  *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     47:  *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
                     48:  *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
                     49:  *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     50:  */
                     51: #include "libfdt_env.h"
                     52: 
                     53: #ifndef USE_HOSTCC
                     54: #include <fdt.h>
                     55: #include <libfdt.h>
                     56: #else
                     57: #include "fdt_host.h"
                     58: #endif
                     59: 
                     60: #include "libfdt_internal.h"
                     61: 
                     62: struct fdt_errtabent {
                     63:        const char *str;
                     64: };
                     65: 
                     66: #define FDT_ERRTABENT(val) \
                     67:        [(val)] = { .str = #val, }
                     68: 
                     69: static struct fdt_errtabent fdt_errtable[] = {
                     70:        FDT_ERRTABENT(FDT_ERR_NOTFOUND),
                     71:        FDT_ERRTABENT(FDT_ERR_EXISTS),
                     72:        FDT_ERRTABENT(FDT_ERR_NOSPACE),
                     73: 
                     74:        FDT_ERRTABENT(FDT_ERR_BADOFFSET),
                     75:        FDT_ERRTABENT(FDT_ERR_BADPATH),
                     76:        FDT_ERRTABENT(FDT_ERR_BADSTATE),
                     77: 
                     78:        FDT_ERRTABENT(FDT_ERR_TRUNCATED),
                     79:        FDT_ERRTABENT(FDT_ERR_BADMAGIC),
                     80:        FDT_ERRTABENT(FDT_ERR_BADVERSION),
                     81:        FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
                     82:        FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
                     83: };
                     84: #define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
                     85: 
                     86: const char *fdt_strerror(int errval)
                     87: {
                     88:        if (errval > 0)
                     89:                return "<valid offset/length>";
                     90:        else if (errval == 0)
                     91:                return "<no error>";
                     92:        else if (errval > -FDT_ERRTABSIZE) {
                     93:                const char *s = fdt_errtable[-errval].str;
                     94: 
                     95:                if (s)
                     96:                        return s;
                     97:        }
                     98: 
                     99:        return "<unknown error>";
                    100: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>