mrk redo - make it work again ... another effort

This commit is contained in:
Carsten Haitzler 2014-11-26 20:54:02 +09:00
parent 9c3cb5a9f5
commit cd3922c8a9
3 changed files with 17 additions and 13 deletions

1
mrk.c
View File

@ -193,6 +193,7 @@ main(int argc, char **argv)
Mrk_Build *bld = mrk_build_load("Marrakesh.mrk"); Mrk_Build *bld = mrk_build_load("Marrakesh.mrk");
if (!bld) _mrk_err("Failed to load Marrakesh.mrk\n"); if (!bld) _mrk_err("Failed to load Marrakesh.mrk\n");
snprintf(tmp, sizeof(tmp), "%s-%s.mkb", bld->name, bld->version); snprintf(tmp, sizeof(tmp), "%s-%s.mkb", bld->name, bld->version);
if (!ecore_file_exists(build_tmpdir)) _mrk_err("No build dir!\n");
if (!mrk_build_package_bin(bld, tmp, build_tmpdir, os, arch)) if (!mrk_build_package_bin(bld, tmp, build_tmpdir, os, arch))
{ {
mrk_build_free(bld); mrk_build_free(bld);

View File

@ -103,11 +103,12 @@ parse_content(char *mem, size_t size)
char *p = mem; char *p = mem;
int skipline = 0; int skipline = 0;
int startline = 0; int startline = 0;
int line = 1;
char *seg = NULL, *s; char *seg = NULL, *s;
char *data1 = NULL, *data2 = NULL; char *data1 = NULL, *data2 = NULL;
int i; int i;
Tag_Mode mode = TMODE_TEXT; Tag_Mode mode = TMODE_TEXT;
#define err(reason) do { fprintf(stderr, "%s\n", reason); goto error; } while (0) #define err(reason...) do { fprintf(stderr, ##reason); goto error; } while (0)
bld = calloc(1, sizeof(Mrk_Build)); bld = calloc(1, sizeof(Mrk_Build));
if (!bld) return NULL; if (!bld) return NULL;
@ -116,6 +117,7 @@ parse_content(char *mem, size_t size)
{ {
if (prevc == '\n') if (prevc == '\n')
{ {
line++;
if (*p == '#') skipline = 1; if (*p == '#') skipline = 1;
else skipline = 0; else skipline = 0;
startline = 1; startline = 1;
@ -127,7 +129,7 @@ parse_content(char *mem, size_t size)
prevp = p; prevp = p;
tok = parse_token(&p, end); tok = parse_token(&p, end);
if (!tok) err("token parse error"); if (!tok) err("%i: token parse error\n", line);
if (startline) if (startline)
{ {
for (i = 0; tags[i].tag; i++) for (i = 0; tags[i].tag; i++)
@ -151,25 +153,25 @@ not_tag:
case TMODE_TEXT: case TMODE_TEXT:
p = prevp; p = prevp;
data1 = parse_eol(&p, end); data1 = parse_eol(&p, end);
if (!data1) err("no content"); if (!data1) err("%i: no content\n", line);
break; break;
case TMODE_PATH: case TMODE_PATH:
case TMODE_PATH_LIST: case TMODE_PATH_LIST:
data1 = path_check(tok); data1 = path_check(tok);
if (!data1) err("path invalid"); if (!data1) err("%i: path invalid\n", line);
break; break;
case TMODE_PATH_CP: case TMODE_PATH_CP:
case TMODE_PATH_CP_LIST: case TMODE_PATH_CP_LIST:
data1 = path_check(tok); data1 = path_check(tok);
if (!data1) err("path invalid"); if (!data1) err("%i: path invalid\n", line);
s = parse_token(&p, end); s = parse_token(&p, end);
if (!s) err("missing > in path copy"); if (!s) err("%i: missing > in path copy\n", line);
if (!(!strcmp(s, ">"))) err("copy token is not >"); if (!(!strcmp(s, ">"))) err("%i: copy token is not >\n", line);
free(s); free(s);
s = parse_token(&p, end); s = parse_token(&p, end);
if (!s) err("missing destination path in path copy"); if (!s) err("%i: missing destination path in path copy\n", line);
data2 = path_check(s); data2 = path_check(s);
if (!data2) err("destination path not valid"); if (!data2) err("%i: destination path not valid\n", line);
free(s); free(s);
break; break;
default: default:
@ -180,7 +182,7 @@ not_tag:
if (!strcmp(seg, "PROJ:")) if (!strcmp(seg, "PROJ:"))
{ {
if (!_mrk_util_plain_file_check(data1)) if (!_mrk_util_plain_file_check(data1))
err("name failed sanity check"); err("%i: name failed sanity check\n", line);
eina_stringshare_del(bld->name); eina_stringshare_del(bld->name);
bld->name = eina_stringshare_add(data1); bld->name = eina_stringshare_add(data1);
} }
@ -337,6 +339,7 @@ not_tag:
} }
free(tok); free(tok);
prevc = *p; prevc = *p;
p++;
} }
else else
{ {
@ -530,9 +533,9 @@ mrk_build_do(Mrk_Build *bld, const char *tmpd)
} }
EINA_LIST_FOREACH(bin->deps, ll, s) EINA_LIST_FOREACH(bin->deps, ll, s)
{ {
eina_strbuf_append(buf, " pkg-config --cflags --libs "); eina_strbuf_append(buf, " `pkg-config --cflags --libs ");
eina_strbuf_append(buf, s); eina_strbuf_append(buf, s);
eina_strbuf_append(buf, " "); eina_strbuf_append(buf, "`");
} }
EINA_LIST_FOREACH(bin->incs, ll, s) EINA_LIST_FOREACH(bin->incs, ll, s)
{ {

View File

@ -7,7 +7,7 @@ static const char *sane_name_ok =
static const char *sane_path_veto[] = static const char *sane_path_veto[] =
{"../", "./", NULL}; {"../", "./", NULL};
static const char *sane_path_ok = static const char *sane_path_ok =
"01234567890-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. "; "/01234567890-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. ";
static int static int
_sane_forbidden_path(const char *file, const char **forbidden) _sane_forbidden_path(const char *file, const char **forbidden)