Release 4.18 scripts/kconfig/util.c
/*
* Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>
* Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>
*
* Released under the terms of the GNU GPL v2.0.
*/
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "lkc.h"
/* file already present in list? If not add it */
struct file *file_lookup(const char *name)
{
struct file *file;
for (file = file_list; file; file = file->next) {
if (!strcmp(name, file->name)) {
return file;
}
}
file = xmalloc(sizeof(*file));
memset(file, 0, sizeof(*file));
file->name = xstrdup(name);
file->next = file_list;
file_list = file;
return file;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 89 | 92.71% | 1 | 25.00% |
| Masahiro Yamada | 4 | 4.17% | 1 | 25.00% |
| Arnaud Lacombe | 2 | 2.08% | 1 | 25.00% |
| Alan Cox | 1 | 1.04% | 1 | 25.00% |
| Total | 96 | 100.00% | 4 | 100.00% |
/* write a dependency file as used by kbuild to track dependencies */
int file_write_dep(const char *name)
{
struct file *file;
FILE *out;
if (!name)
name = ".kconfig.d";
out = fopen("..config.tmp", "w");
if (!out)
return 1;
fprintf(out, "deps_config := \\\n");
for (file = file_list; file; file = file->next) {
if (file->next)
fprintf(out, "\t%s \\\n", file->name);
else
fprintf(out, "\t%s\n", file->name);
}
fprintf(out, "\n%s: \\\n"
"\t$(deps_config)\n\n", conf_get_autoconfig_name());
env_write_dep(out, conf_get_autoconfig_name());
fprintf(out, "\n$(deps_config): ;\n");
fclose(out);
rename("..config.tmp", name);
return 0;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 118 | 85.51% | 2 | 33.33% |
| Roman Zippel | 13 | 9.42% | 2 | 33.33% |
| Markus Heidelberg | 6 | 4.35% | 1 | 16.67% |
| Masahiro Yamada | 1 | 0.72% | 1 | 16.67% |
| Total | 138 | 100.00% | 6 | 100.00% |
/* Allocate initial growable string */
struct gstr str_new(void)
{
struct gstr gs;
gs.s = xmalloc(sizeof(char) * 64);
gs.len = 64;
gs.max_width = 0;
strcpy(gs.s, "\0");
return gs;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 42 | 84.00% | 1 | 25.00% |
| Vadim Bendebury | 6 | 12.00% | 1 | 25.00% |
| Alan Cox | 1 | 2.00% | 1 | 25.00% |
| Christophe Jaillet | 1 | 2.00% | 1 | 25.00% |
| Total | 50 | 100.00% | 4 | 100.00% |
/* Free storage for growable string */
void str_free(struct gstr *gs)
{
if (gs->s)
free(gs->s);
gs->s = NULL;
gs->len = 0;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 35 | 100.00% | 1 | 100.00% |
| Total | 35 | 100.00% | 1 | 100.00% |
/* Append to growable string */
void str_append(struct gstr *gs, const char *s)
{
size_t l;
if (s) {
l = strlen(gs->s) + strlen(s) + 1;
if (l > gs->len) {
gs->s = xrealloc(gs->s, l);
gs->len = l;
}
strcat(gs->s, s);
}
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 77 | 98.72% | 2 | 66.67% |
| Masahiro Yamada | 1 | 1.28% | 1 | 33.33% |
| Total | 78 | 100.00% | 3 | 100.00% |
/* Append printf formatted string to growable string */
void str_printf(struct gstr *gs, const char *fmt, ...)
{
va_list ap;
char s[10000]; /* big enough... */
va_start(ap, fmt);
vsnprintf(s, sizeof(s), fmt, ap);
str_append(gs, s);
va_end(ap);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 60 | 100.00% | 1 | 100.00% |
| Total | 60 | 100.00% | 1 | 100.00% |
/* Retrieve value of growable string */
const char *str_get(struct gstr *gs)
{
return gs->s;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 17 | 100.00% | 1 | 100.00% |
| Total | 17 | 100.00% | 1 | 100.00% |
void *xmalloc(size_t size)
{
void *p = malloc(size);
if (p)
return p;
fprintf(stderr, "Out of memory.\n");
exit(1);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Alan Cox | 37 | 100.00% | 1 | 100.00% |
| Total | 37 | 100.00% | 1 | 100.00% |
void *xcalloc(size_t nmemb, size_t size)
{
void *p = calloc(nmemb, size);
if (p)
return p;
fprintf(stderr, "Out of memory.\n");
exit(1);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Alan Cox | 42 | 100.00% | 1 | 100.00% |
| Total | 42 | 100.00% | 1 | 100.00% |
void *xrealloc(void *p, size_t size)
{
p = realloc(p, size);
if (p)
return p;
fprintf(stderr, "Out of memory.\n");
exit(1);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Masahiro Yamada | 41 | 100.00% | 1 | 100.00% |
| Total | 41 | 100.00% | 1 | 100.00% |
char *xstrdup(const char *s)
{
char *p;
p = strdup(s);
if (p)
return p;
fprintf(stderr, "Out of memory.\n");
exit(1);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Masahiro Yamada | 41 | 100.00% | 1 | 100.00% |
| Total | 41 | 100.00% | 1 | 100.00% |
char *xstrndup(const char *s, size_t n)
{
char *p;
p = strndup(s, n);
if (p)
return p;
fprintf(stderr, "Out of memory.\n");
exit(1);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Masahiro Yamada | 46 | 100.00% | 1 | 100.00% |
| Total | 46 | 100.00% | 1 | 100.00% |
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| Sam Ravnborg | 450 | 64.19% | 3 | 16.67% |
| Masahiro Yamada | 134 | 19.12% | 4 | 22.22% |
| Alan Cox | 81 | 11.55% | 1 | 5.56% |
| Roman Zippel | 13 | 1.85% | 2 | 11.11% |
| Arnaud Lacombe | 8 | 1.14% | 3 | 16.67% |
| Vadim Bendebury | 6 | 0.86% | 1 | 5.56% |
| Markus Heidelberg | 6 | 0.86% | 1 | 5.56% |
| Matt Mackall | 1 | 0.14% | 1 | 5.56% |
| Thomas Weber | 1 | 0.14% | 1 | 5.56% |
| Christophe Jaillet | 1 | 0.14% | 1 | 5.56% |
| Total | 701 | 100.00% | 18 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.