~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/kconfig/util.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/kconfig/util.c (Version linux-6.12-rc7) and /scripts/kconfig/util.c (Version linux-5.16.20)


  1 // SPDX-License-Identifier: GPL-2.0                 1 // SPDX-License-Identifier: GPL-2.0
  2 /*                                                  2 /*
  3  * Copyright (C) 2002-2005 Roman Zippel <zippe      3  * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>
  4  * Copyright (C) 2002-2005 Sam Ravnborg <sam@r      4  * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>
  5  */                                                 5  */
  6                                                     6 
  7 #include <stdarg.h>                                 7 #include <stdarg.h>
  8 #include <stdlib.h>                                 8 #include <stdlib.h>
  9 #include <string.h>                                 9 #include <string.h>
 10                                                << 
 11 #include <hash.h>                              << 
 12 #include <hashtable.h>                         << 
 13 #include <xalloc.h>                            << 
 14 #include "lkc.h"                                   10 #include "lkc.h"
 15                                                    11 
 16 /* hash table of all parsed Kconfig files */   << 
 17 static HASHTABLE_DEFINE(file_hashtable, 1U <<  << 
 18                                                << 
 19 struct file {                                  << 
 20         struct hlist_node node;                << 
 21         char name[];                           << 
 22 };                                             << 
 23                                                << 
 24 /* file already present in list? If not add it     12 /* file already present in list? If not add it */
 25 const char *file_lookup(const char *name)      !!  13 struct file *file_lookup(const char *name)
 26 {                                                  14 {
 27         struct file *file;                         15         struct file *file;
 28         size_t len;                            << 
 29         int hash = hash_str(name);             << 
 30                                                    16 
 31         hash_for_each_possible(file_hashtable, !!  17         for (file = file_list; file; file = file->next) {
 32                 if (!strcmp(name, file->name)) !!  18                 if (!strcmp(name, file->name)) {
 33                         return file->name;     !!  19                         return file;
                                                   >>  20                 }
                                                   >>  21         }
 34                                                    22 
 35         len = strlen(name);                    !!  23         file = xmalloc(sizeof(*file));
 36         file = xmalloc(sizeof(*file) + len + 1 << 
 37         memset(file, 0, sizeof(*file));            24         memset(file, 0, sizeof(*file));
 38         memcpy(file->name, name, len);         !!  25         file->name = xstrdup(name);
 39         file->name[len] = '\0';                !!  26         file->next = file_list;
 40                                                !!  27         file_list = file;
 41         hash_add(file_hashtable, &file->node,  !!  28         return file;
 42                                                << 
 43         str_printf(&autoconf_cmd, "\t%s \\\n", << 
 44                                                << 
 45         return file->name;                     << 
 46 }                                                  29 }
 47                                                    30 
 48 /* Allocate initial growable string */             31 /* Allocate initial growable string */
 49 struct gstr str_new(void)                          32 struct gstr str_new(void)
 50 {                                                  33 {
 51         struct gstr gs;                            34         struct gstr gs;
 52         gs.s = xmalloc(sizeof(char) * 64);         35         gs.s = xmalloc(sizeof(char) * 64);
 53         gs.len = 64;                               36         gs.len = 64;
 54         gs.max_width = 0;                          37         gs.max_width = 0;
 55         strcpy(gs.s, "\0");                        38         strcpy(gs.s, "\0");
 56         return gs;                                 39         return gs;
 57 }                                                  40 }
 58                                                    41 
 59 /* Free storage for growable string */             42 /* Free storage for growable string */
 60 void str_free(struct gstr *gs)                     43 void str_free(struct gstr *gs)
 61 {                                                  44 {
 62         free(gs->s);                           !!  45         if (gs->s)
                                                   >>  46                 free(gs->s);
 63         gs->s = NULL;                              47         gs->s = NULL;
 64         gs->len = 0;                               48         gs->len = 0;
 65 }                                                  49 }
 66                                                    50 
 67 /* Append to growable string */                    51 /* Append to growable string */
 68 void str_append(struct gstr *gs, const char *s     52 void str_append(struct gstr *gs, const char *s)
 69 {                                                  53 {
 70         size_t l;                                  54         size_t l;
 71         if (s) {                                   55         if (s) {
 72                 l = strlen(gs->s) + strlen(s)      56                 l = strlen(gs->s) + strlen(s) + 1;
 73                 if (l > gs->len) {                 57                 if (l > gs->len) {
 74                         gs->s = xrealloc(gs->s     58                         gs->s = xrealloc(gs->s, l);
 75                         gs->len = l;               59                         gs->len = l;
 76                 }                                  60                 }
 77                 strcat(gs->s, s);                  61                 strcat(gs->s, s);
 78         }                                          62         }
 79 }                                                  63 }
 80                                                    64 
 81 /* Append printf formatted string to growable      65 /* Append printf formatted string to growable string */
 82 void str_printf(struct gstr *gs, const char *f     66 void str_printf(struct gstr *gs, const char *fmt, ...)
 83 {                                                  67 {
 84         va_list ap;                                68         va_list ap;
 85         char s[10000]; /* big enough... */         69         char s[10000]; /* big enough... */
 86         va_start(ap, fmt);                         70         va_start(ap, fmt);
 87         vsnprintf(s, sizeof(s), fmt, ap);          71         vsnprintf(s, sizeof(s), fmt, ap);
 88         str_append(gs, s);                         72         str_append(gs, s);
 89         va_end(ap);                                73         va_end(ap);
 90 }                                                  74 }
 91                                                    75 
 92 /* Retrieve value of growable string */            76 /* Retrieve value of growable string */
 93 char *str_get(const struct gstr *gs)           !!  77 const char *str_get(struct gstr *gs)
 94 {                                                  78 {
 95         return gs->s;                              79         return gs->s;
                                                   >>  80 }
                                                   >>  81 
                                                   >>  82 void *xmalloc(size_t size)
                                                   >>  83 {
                                                   >>  84         void *p = malloc(size);
                                                   >>  85         if (p)
                                                   >>  86                 return p;
                                                   >>  87         fprintf(stderr, "Out of memory.\n");
                                                   >>  88         exit(1);
                                                   >>  89 }
                                                   >>  90 
                                                   >>  91 void *xcalloc(size_t nmemb, size_t size)
                                                   >>  92 {
                                                   >>  93         void *p = calloc(nmemb, size);
                                                   >>  94         if (p)
                                                   >>  95                 return p;
                                                   >>  96         fprintf(stderr, "Out of memory.\n");
                                                   >>  97         exit(1);
                                                   >>  98 }
                                                   >>  99 
                                                   >> 100 void *xrealloc(void *p, size_t size)
                                                   >> 101 {
                                                   >> 102         p = realloc(p, size);
                                                   >> 103         if (p)
                                                   >> 104                 return p;
                                                   >> 105         fprintf(stderr, "Out of memory.\n");
                                                   >> 106         exit(1);
                                                   >> 107 }
                                                   >> 108 
                                                   >> 109 char *xstrdup(const char *s)
                                                   >> 110 {
                                                   >> 111         char *p;
                                                   >> 112 
                                                   >> 113         p = strdup(s);
                                                   >> 114         if (p)
                                                   >> 115                 return p;
                                                   >> 116         fprintf(stderr, "Out of memory.\n");
                                                   >> 117         exit(1);
                                                   >> 118 }
                                                   >> 119 
                                                   >> 120 char *xstrndup(const char *s, size_t n)
                                                   >> 121 {
                                                   >> 122         char *p;
                                                   >> 123 
                                                   >> 124         p = strndup(s, n);
                                                   >> 125         if (p)
                                                   >> 126                 return p;
                                                   >> 127         fprintf(stderr, "Out of memory.\n");
                                                   >> 128         exit(1);
 96 }                                                 129 }
 97                                                   130 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php