config.c (16b02d711f4059b8338ef967064195b47cae65ea) config.c (9cb5987c822714352e3eb46806fc260b3cb4ff0d)
1/*
2 * config.c
3 *
4 * Helper functions for parsing config items.
5 * Originally copied from GIT source.
6 *
7 * Copyright (C) Linus Torvalds, 2005
8 * Copyright (C) Johannes Schindelin, 2005

--- 363 unchanged lines hidden (view full) ---

372
373const char *perf_config_dirname(const char *name, const char *value)
374{
375 if (!name)
376 return NULL;
377 return value;
378}
379
1/*
2 * config.c
3 *
4 * Helper functions for parsing config items.
5 * Originally copied from GIT source.
6 *
7 * Copyright (C) Linus Torvalds, 2005
8 * Copyright (C) Johannes Schindelin, 2005

--- 363 unchanged lines hidden (view full) ---

372
373const char *perf_config_dirname(const char *name, const char *value)
374{
375 if (!name)
376 return NULL;
377 return value;
378}
379
380static int perf_buildid_config(const char *var, const char *value)
381{
382 /* same dir for all commands */
383 if (!strcmp(var, "buildid.dir")) {
384 const char *dirname = perf_config_dirname(var, value);
385
386 if (!dirname)
387 return -1;
388 strncpy(buildid_dir, dirname, MAXPATHLEN-1);
389 buildid_dir[MAXPATHLEN-1] = '\0';
390 }
391
392 return 0;
393}
394
380static int perf_default_core_config(const char *var __maybe_unused,
381 const char *value __maybe_unused)
382{
383 /* Add other config variables here. */
384 return 0;
385}
386
387static int perf_ui_config(const char *var, const char *value)

--- 19 unchanged lines hidden (view full) ---

407 return perf_ui_config(var, value);
408
409 if (!prefixcmp(var, "call-graph."))
410 return perf_callchain_config(var, value);
411
412 if (!prefixcmp(var, "llvm."))
413 return perf_llvm_config(var, value);
414
395static int perf_default_core_config(const char *var __maybe_unused,
396 const char *value __maybe_unused)
397{
398 /* Add other config variables here. */
399 return 0;
400}
401
402static int perf_ui_config(const char *var, const char *value)

--- 19 unchanged lines hidden (view full) ---

422 return perf_ui_config(var, value);
423
424 if (!prefixcmp(var, "call-graph."))
425 return perf_callchain_config(var, value);
426
427 if (!prefixcmp(var, "llvm."))
428 return perf_llvm_config(var, value);
429
430 if (!prefixcmp(var, "buildid."))
431 return perf_buildid_config(var, value);
432
415 /* Add other config variables here. */
416 return 0;
417}
418
419static int perf_config_from_file(config_fn_t fn, const char *filename, void *data)
420{
421 int ret;
422 FILE *f = fopen(filename, "r");

--- 87 unchanged lines hidden (view full) ---

510 * Call this to report error for your variable that should not
511 * get a boolean value (i.e. "[my] var" means "true").
512 */
513int config_error_nonbool(const char *var)
514{
515 return error("Missing value for '%s'", var);
516}
517
433 /* Add other config variables here. */
434 return 0;
435}
436
437static int perf_config_from_file(config_fn_t fn, const char *filename, void *data)
438{
439 int ret;
440 FILE *f = fopen(filename, "r");

--- 87 unchanged lines hidden (view full) ---

528 * Call this to report error for your variable that should not
529 * get a boolean value (i.e. "[my] var" means "true").
530 */
531int config_error_nonbool(const char *var)
532{
533 return error("Missing value for '%s'", var);
534}
535
518struct buildid_dir_config {
519 char *dir;
520};
521
522static int buildid_dir_command_config(const char *var, const char *value,
523 void *data)
524{
525 struct buildid_dir_config *c = data;
526 const char *v;
527
528 /* same dir for all commands */
529 if (!strcmp(var, "buildid.dir")) {
530 v = perf_config_dirname(var, value);
531 if (!v)
532 return -1;
533 strncpy(c->dir, v, MAXPATHLEN-1);
534 c->dir[MAXPATHLEN-1] = '\0';
535 }
536 return 0;
537}
538
539static void check_buildid_dir_config(void)
540{
541 struct buildid_dir_config c;
542 c.dir = buildid_dir;
543 perf_config(buildid_dir_command_config, &c);
544}
545
546void set_buildid_dir(const char *dir)
547{
548 if (dir)
549 scnprintf(buildid_dir, MAXPATHLEN-1, "%s", dir);
550
536void set_buildid_dir(const char *dir)
537{
538 if (dir)
539 scnprintf(buildid_dir, MAXPATHLEN-1, "%s", dir);
540
551 /* try config file */
552 if (buildid_dir[0] == '\0')
553 check_buildid_dir_config();
554
555 /* default to $HOME/.debug */
556 if (buildid_dir[0] == '\0') {
557 char *v = getenv("HOME");
558 if (v) {
559 snprintf(buildid_dir, MAXPATHLEN-1, "%s/%s",
560 v, DEBUG_CACHE_DIR);
561 } else {
562 strncpy(buildid_dir, DEBUG_CACHE_DIR, MAXPATHLEN-1);
563 }
564 buildid_dir[MAXPATHLEN-1] = '\0';
565 }
566 /* for communicating with external commands */
567 setenv("PERF_BUILDID_DIR", buildid_dir, 1);
568}
541 /* default to $HOME/.debug */
542 if (buildid_dir[0] == '\0') {
543 char *v = getenv("HOME");
544 if (v) {
545 snprintf(buildid_dir, MAXPATHLEN-1, "%s/%s",
546 v, DEBUG_CACHE_DIR);
547 } else {
548 strncpy(buildid_dir, DEBUG_CACHE_DIR, MAXPATHLEN-1);
549 }
550 buildid_dir[MAXPATHLEN-1] = '\0';
551 }
552 /* for communicating with external commands */
553 setenv("PERF_BUILDID_DIR", buildid_dir, 1);
554}