|
Lines 50-55
Link Here
|
| 50 |
XtFree(p->x); \ |
50 |
XtFree(p->x); \ |
| 51 |
p->x=XtNewString(""); |
51 |
p->x=XtNewString(""); |
| 52 |
|
52 |
|
|
|
53 |
#define AddListItem(type, head, new) \ |
| 54 |
head = (type) xf86addListItem((GenericListPtr) (head), (GenericListPtr) (new)); |
| 55 |
|
| 56 |
#define LoadList conf->conf_modules->mod_load_lst |
| 57 |
#define DisableList conf->conf_modules->mod_disable_lst |
| 58 |
|
| 59 |
void get_loads(XF86ConfigPtr conf) |
| 60 |
{ |
| 61 |
XF86LoadPtr l; |
| 62 |
|
| 63 |
for (l = LoadList; l != NULL; l = l->list.next) |
| 64 |
if (l->load_type == XF86_LOAD_MODULE) |
| 65 |
printf("%s\n", l->load_name); |
| 66 |
} |
| 67 |
|
| 68 |
void inline set_module(XF86ConfigPtr conf, const char *module, int in, int out) |
| 69 |
{ |
| 70 |
XF86LoadPtr l; |
| 71 |
int f = 0; |
| 72 |
|
| 73 |
if (LoadList != DisableList) |
| 74 |
AddListItem(XF86LoadPtr, LoadList, DisableList); |
| 75 |
for (l = LoadList; l != NULL; l = l->list.next) |
| 76 |
if ((l->load_opt == NULL) && (strcmp(l->load_name, module) == 0)) |
| 77 |
{ |
| 78 |
if (l->load_type == in) |
| 79 |
{ |
| 80 |
l->load_type = out; |
| 81 |
l->load_comment = NULL; |
| 82 |
l->ignore = 0; |
| 83 |
} |
| 84 |
f = 1; |
| 85 |
} |
| 86 |
if ((f == 0) && ((l = malloc(sizeof(XF86LoadRec))) != NULL)) |
| 87 |
{ |
| 88 |
l->load_name = (char*) module; |
| 89 |
l->load_opt = NULL; |
| 90 |
l->list.next = NULL; |
| 91 |
l->load_type = out; |
| 92 |
l->load_comment = NULL; |
| 93 |
l->ignore = 0; |
| 94 |
AddListItem(XF86LoadPtr, LoadList, l); |
| 95 |
} |
| 96 |
} |
| 97 |
|
| 98 |
void set_loads(XF86ConfigPtr conf, const char *module) |
| 99 |
{ |
| 100 |
set_module(conf, module, XF86_DISABLE_MODULE, XF86_LOAD_MODULE); |
| 101 |
} |
| 102 |
|
| 103 |
void get_disabled(XF86ConfigPtr conf) |
| 104 |
{ |
| 105 |
XF86LoadPtr l; |
| 106 |
|
| 107 |
for (l = DisableList; l != NULL; l = l->list.next) |
| 108 |
if (l->load_type == XF86_DISABLE_MODULE) |
| 109 |
printf("%s\n", l->load_name); |
| 110 |
} |
| 111 |
|
| 112 |
void set_disable(XF86ConfigPtr conf, const char *module) |
| 113 |
{ |
| 114 |
set_module(conf, module, XF86_LOAD_MODULE, XF86_DISABLE_MODULE); |
| 115 |
} |
| 116 |
|
| 117 |
#define ExtOptList conf->conf_extensions->ext_option_lst |
| 118 |
|
| 119 |
void get_extopts(XF86ConfigPtr conf) |
| 120 |
{ |
| 121 |
if (conf->conf_extensions != NULL) |
| 122 |
{ |
| 123 |
XF86OptionPtr p; |
| 124 |
for (p = ExtOptList; p != NULL; p = xf86nextOption(p)) |
| 125 |
printf("%s=%s\n", xf86optionName(p), xf86optionValue(p)); |
| 126 |
} |
| 127 |
} |
| 128 |
|
| 129 |
void get_extopt(XF86ConfigPtr conf, const char *name) |
| 130 |
{ |
| 131 |
if (conf->conf_extensions != NULL) |
| 132 |
{ |
| 133 |
XF86OptionPtr p; |
| 134 |
if ((p = xf86findOption(ExtOptList, name)) != NULL) |
| 135 |
printf("%s\n", xf86optionValue(p)); |
| 136 |
} |
| 137 |
} |
| 138 |
|
| 139 |
void set_extopt(XF86ConfigPtr conf, char *opt) |
| 140 |
{ |
| 141 |
char *c = strchr(opt, '='); |
| 142 |
|
| 143 |
if (c != NULL) |
| 144 |
{ |
| 145 |
if (conf->conf_extensions == NULL) |
| 146 |
{ |
| 147 |
conf->conf_extensions = malloc(sizeof(XF86ConfExtensionsRec)); |
| 148 |
if (conf->conf_extensions == NULL) return; |
| 149 |
ExtOptList = NULL; |
| 150 |
conf->conf_extensions->extensions_comment = NULL; |
| 151 |
} |
| 152 |
*c = '\0'; |
| 153 |
ExtOptList = xf86addNewOption(ExtOptList, opt, &(c[1])); |
| 154 |
} |
| 155 |
} |
| 156 |
|
| 53 |
void setup_monitor(XF86ConfigPtr conf,const char *monitor_name) |
157 |
void setup_monitor(XF86ConfigPtr conf,const char *monitor_name) |
| 54 |
{ |
158 |
{ |
| 55 |
char * line = NULL; |
159 |
char * line = NULL; |
|
Lines 335-341
Link Here
|
| 335 |
usage (int retcode) |
439 |
usage (int retcode) |
| 336 |
{ |
440 |
{ |
| 337 |
fprintf (stdout, |
441 |
fprintf (stdout, |
| 338 |
"Usage: %s <action> old_config [new_config] \n" |
442 |
"Usage: %s <action> [<action>...] old_config [new_config] \n" |
| 339 |
"\tnew_config is necessarily for all modifications", |
443 |
"\tnew_config is necessarily for all modifications", |
| 340 |
__progname); |
444 |
__progname); |
| 341 |
fputs ("\nTree - utility to read and modify some xorg config section\n", |
445 |
fputs ("\nTree - utility to read and modify some xorg config section\n", |
|
Lines 350-356
Link Here
|
| 350 |
"\t-c, --get-color-depth get current default color depth value\n" |
454 |
"\t-c, --get-color-depth get current default color depth value\n" |
| 351 |
"\t-C, --set-color-depth set new default color depth value\n" |
455 |
"\t-C, --set-color-depth set new default color depth value\n" |
| 352 |
"\t-r, --get-resolution get current resolution list (mode list)\n" |
456 |
"\t-r, --get-resolution get current resolution list (mode list)\n" |
| 353 |
"\t-R, --set-resolution set new resolution list (mode list)\n", |
457 |
"\t-R, --set-resolution set new resolution list (mode list)\n" |
|
|
458 |
"\t-l, --get-loads get current modules list to load\n" |
| 459 |
"\t-L, --set-loads set new module to load\n" |
| 460 |
"\t-a, --get-extopts get options from Section Extensions (<name>=<value>)\n" |
| 461 |
"\t-E, --set-extopt set option in Section Extensions (<name>=<value>)\n" |
| 462 |
"\t-e, --get-extopt get specified option from Section Extensions\n" |
| 463 |
"\t-m, --get-disable get current modules list to disable\n" |
| 464 |
"\t-M, --set-disable set module to disable\n", |
| 354 |
stdout); |
465 |
stdout); |
| 355 |
|
466 |
|
| 356 |
fputs ("\nReport bugs to <inger@altlinux.org>\n", stdout); |
467 |
fputs ("\nReport bugs to <inger@altlinux.org>\n", stdout); |
|
Lines 367-382
Link Here
|
| 367 |
scolor, |
478 |
scolor, |
| 368 |
gres, |
479 |
gres, |
| 369 |
sres, |
480 |
sres, |
| 370 |
gdriver} action_type; |
481 |
gdriver, |
|
|
482 |
gloads, |
| 483 |
sloads, |
| 484 |
gextopts, |
| 485 |
sextopt, |
| 486 |
gextopt, |
| 487 |
gdisable, |
| 488 |
sdisable} action_type; |
| 489 |
|
| 490 |
typedef struct ActionRec |
| 491 |
{ |
| 492 |
GenericListRec list; |
| 493 |
action_type type; |
| 494 |
char *arg; |
| 495 |
} ActionRec, *ActionPtr; |
| 496 |
|
| 497 |
ActionPtr add_action_to_list(ActionPtr actions, action_type a, const char *arg) |
| 498 |
{ |
| 499 |
ActionPtr action = malloc(sizeof(ActionRec)); |
| 500 |
|
| 501 |
if (action != NULL) |
| 502 |
{ |
| 503 |
action->list.next = NULL; |
| 504 |
action->type = a; |
| 505 |
action->arg = (char*) arg; |
| 506 |
return AddListItem(ActionPtr, actions, action); |
| 507 |
} |
| 508 |
else |
| 509 |
return actions; |
| 510 |
} |
| 511 |
|
| 512 |
#define add_action(a, arg) add_action_to_list(actions, (a), (arg)) |
| 513 |
#define add_info(a) add_action((a), NULL) |
| 371 |
|
514 |
|
| 372 |
int main(int argc,char *argv[]) |
515 |
int main(int argc,char *argv[]) |
| 373 |
{ |
516 |
{ |
| 374 |
action_type action; |
|
|
| 375 |
const char *filename; |
517 |
const char *filename; |
| 376 |
XF86ConfigPtr conf; |
518 |
XF86ConfigPtr conf; |
| 377 |
char *name = 0; |
|
|
| 378 |
char *oldconfig = 0; |
519 |
char *oldconfig = 0; |
| 379 |
char *newconfig = 0; |
520 |
char *newconfig = 0; |
|
|
521 |
ActionPtr actions = NULL; |
| 522 |
int write_config = 0; |
| 380 |
|
523 |
|
| 381 |
while (1) |
524 |
while (1) |
| 382 |
{ |
525 |
{ |
|
Lines 392-402
Link Here
|
| 392 |
{"set-color-depth", required_argument, 0, 'C'}, |
535 |
{"set-color-depth", required_argument, 0, 'C'}, |
| 393 |
{"get-resolution", no_argument, 0, 'r'}, |
536 |
{"get-resolution", no_argument, 0, 'r'}, |
| 394 |
{"set-resolution", required_argument, 0, 'R'}, |
537 |
{"set-resolution", required_argument, 0, 'R'}, |
|
|
538 |
{"get-loads", no_argument, 0, 'l'}, |
| 539 |
{"set-loads", required_argument, 0, 'L'}, |
| 540 |
{"get-extopts",no_argument, 0, 'a'}, |
| 541 |
{"set-extopt", required_argument, 0, 'E'}, |
| 542 |
{"get-extopt", required_argument, 0, 'e'}, |
| 543 |
{"get-disable",no_argument, 0, 'm'}, |
| 544 |
{"set-disable",required_argument, 0, 'M'}, |
| 395 |
{0, 0, 0, 0} |
545 |
{0, 0, 0, 0} |
| 396 |
}; |
546 |
}; |
| 397 |
char c; |
547 |
char c; |
| 398 |
|
548 |
|
| 399 |
c = getopt_long (argc, argv, "hvdD:nN:cC:rR:", long_options, NULL); |
549 |
c = getopt_long (argc, argv, "hvdD:nN:cC:rR:lL:eE:a:mM:", long_options, NULL); |
| 400 |
if (c == -1) |
550 |
if (c == -1) |
| 401 |
break; |
551 |
break; |
| 402 |
switch (c) |
552 |
switch (c) |
|
Lines 405-441
Link Here
|
| 405 |
usage (EXIT_SUCCESS); |
555 |
usage (EXIT_SUCCESS); |
| 406 |
case 'v': |
556 |
case 'v': |
| 407 |
fputs ("XConfig reader/changer " VERSION "\n" |
557 |
fputs ("XConfig reader/changer " VERSION "\n" |
| 408 |
"Written by Stanislav Ievlev\n\n" |
558 |
"Written by Stanislav Ievlev\n" |
| 409 |
"Copyright (C) 2005 ALT Linux Team\n", |
559 |
"Completed by Led\n\n" |
|
|
560 |
"Copyright (C) 2005,2008 ALT Linux Team\n", |
| 410 |
stdout); |
561 |
stdout); |
| 411 |
exit (EXIT_SUCCESS); |
562 |
exit (EXIT_SUCCESS); |
| 412 |
case 'd': |
563 |
case 'd': |
| 413 |
action = gdevice; |
564 |
actions = add_info(gdevice); |
| 414 |
break; |
565 |
break; |
| 415 |
case 'D': |
566 |
case 'D': |
| 416 |
action = sdevice; |
567 |
actions = add_action(sdevice, strdup(optarg)); |
| 417 |
name = strdup(optarg); |
568 |
write_config++; |
| 418 |
break; |
569 |
break; |
| 419 |
case 'n': |
570 |
case 'n': |
| 420 |
action = gmon; |
571 |
actions = add_info(gmon); |
| 421 |
break; |
572 |
break; |
| 422 |
case 'N': |
573 |
case 'N': |
| 423 |
action = smon; |
574 |
actions = add_action(smon, strdup(optarg)); |
| 424 |
name=strdup(optarg); |
575 |
write_config++; |
| 425 |
break; |
576 |
break; |
| 426 |
case 'c': |
577 |
case 'c': |
| 427 |
action = gcolor; |
578 |
actions = add_info(gcolor); |
| 428 |
break; |
579 |
break; |
| 429 |
case 'C': |
580 |
case 'C': |
| 430 |
action = scolor; |
581 |
actions = add_action(scolor, strdup(optarg)); |
| 431 |
name=strdup(optarg); |
582 |
write_config++; |
| 432 |
break; |
583 |
break; |
| 433 |
case 'r': |
584 |
case 'r': |
| 434 |
action = gres; |
585 |
actions = add_info(gres); |
| 435 |
break; |
586 |
break; |
| 436 |
case 'R': |
587 |
case 'R': |
| 437 |
action = sres; |
588 |
actions = add_action(sres, strdup(optarg)); |
| 438 |
name=strdup(optarg); |
589 |
write_config++; |
|
|
590 |
break; |
| 591 |
case 'l': |
| 592 |
actions = add_info(gloads); |
| 593 |
break; |
| 594 |
case 'L': |
| 595 |
actions = add_action(sloads, strdup(optarg)); |
| 596 |
write_config++; |
| 597 |
break; |
| 598 |
case 'e': |
| 599 |
actions = add_info(gextopts); |
| 600 |
break; |
| 601 |
case 'E': |
| 602 |
actions = add_action(sextopt, strdup(optarg)); |
| 603 |
write_config++; |
| 604 |
break; |
| 605 |
case 'a': |
| 606 |
actions = add_action(gextopt, strdup(optarg)); |
| 607 |
break; |
| 608 |
case 'm': |
| 609 |
actions = add_info(gdisable); |
| 610 |
break; |
| 611 |
case 'M': |
| 612 |
actions = add_action(sdisable, strdup(optarg)); |
| 613 |
write_config++; |
| 439 |
break; |
614 |
break; |
| 440 |
default: |
615 |
default: |
| 441 |
usage (EXIT_FAILURE); |
616 |
usage (EXIT_FAILURE); |
|
Lines 448-458
Link Here
|
| 448 |
|
623 |
|
| 449 |
if (((argc - optind) > 2) || |
624 |
if (((argc - optind) > 2) || |
| 450 |
((argc - optind) == 0) || |
625 |
((argc - optind) == 0) || |
| 451 |
((action == sdevice || |
626 |
(write_config && ((argc - optind) == 1))) |
| 452 |
action == scolor || |
|
|
| 453 |
action == sres || |
| 454 |
action == smon) && |
| 455 |
((argc - optind) == 1))) |
| 456 |
usage(EXIT_FAILURE); |
627 |
usage(EXIT_FAILURE); |
| 457 |
|
628 |
|
| 458 |
oldconfig = argv[optind]; |
629 |
oldconfig = argv[optind]; |
|
Lines 468-474
Link Here
|
| 468 |
} |
639 |
} |
| 469 |
xf86closeConfigFile (); |
640 |
xf86closeConfigFile (); |
| 470 |
|
641 |
|
| 471 |
switch (action) |
642 |
for (; actions != NULL; actions = actions->list.next) { |
|
|
643 |
switch (actions->type) |
| 472 |
{ |
644 |
{ |
| 473 |
case gdevice: |
645 |
case gdevice: |
| 474 |
{ |
646 |
{ |
|
Lines 478-484
Link Here
|
| 478 |
} |
650 |
} |
| 479 |
break; |
651 |
break; |
| 480 |
case sdevice: |
652 |
case sdevice: |
| 481 |
setup_device(conf,name); |
653 |
setup_device(conf, actions->arg); |
| 482 |
break; |
654 |
break; |
| 483 |
case gmon: |
655 |
case gmon: |
| 484 |
{ |
656 |
{ |
|
Lines 489-495
Link Here
|
| 489 |
} |
661 |
} |
| 490 |
break; |
662 |
break; |
| 491 |
case smon: |
663 |
case smon: |
| 492 |
setup_monitor(conf,name); |
664 |
setup_monitor(conf, actions->arg); |
| 493 |
break; |
665 |
break; |
| 494 |
case gcolor: |
666 |
case gcolor: |
| 495 |
printf("%d\n",find_screen(conf)->scrn_defaultdepth); |
667 |
printf("%d\n",find_screen(conf)->scrn_defaultdepth); |
|
Lines 498-504
Link Here
|
| 498 |
{ |
670 |
{ |
| 499 |
XF86ConfScreenPtr screen; |
671 |
XF86ConfScreenPtr screen; |
| 500 |
for (screen = find_screen(conf); screen; screen = screen->list.next) |
672 |
for (screen = find_screen(conf); screen; screen = screen->list.next) |
| 501 |
screen->scrn_defaultdepth = atoi(name); |
673 |
screen->scrn_defaultdepth = atoi(actions->arg); |
| 502 |
} |
674 |
} |
| 503 |
break; |
675 |
break; |
| 504 |
case gres: |
676 |
case gres: |
|
Lines 516-532
Link Here
|
| 516 |
break; |
688 |
break; |
| 517 |
} |
689 |
} |
| 518 |
case sres: |
690 |
case sres: |
| 519 |
setup_resolution(conf,name); |
691 |
setup_resolution(conf, actions->arg); |
|
|
692 |
break; |
| 693 |
case gloads: |
| 694 |
get_loads(conf); |
| 695 |
break; |
| 696 |
case sloads: |
| 697 |
set_loads(conf, actions->arg); |
| 698 |
break; |
| 699 |
case gextopts: |
| 700 |
get_extopts(conf); |
| 701 |
break; |
| 702 |
case sextopt: |
| 703 |
set_extopt(conf, actions->arg); |
| 704 |
break; |
| 705 |
case gextopt: |
| 706 |
get_extopt(conf, actions->arg); |
| 707 |
break; |
| 708 |
case gdisable: |
| 709 |
get_disabled(conf); |
| 710 |
break; |
| 711 |
case sdisable: |
| 712 |
set_disable(conf, actions->arg); |
| 520 |
break; |
713 |
break; |
| 521 |
default: |
714 |
default: |
| 522 |
fprintf(stderr,"fatal:unknown action type\n"); |
715 |
fprintf(stderr,"fatal:unknown action type\n"); |
| 523 |
exit(EXIT_FAILURE); |
716 |
exit(EXIT_FAILURE); |
| 524 |
} |
717 |
} |
| 525 |
|
718 |
} |
| 526 |
if (action == sdevice || |
719 |
|
| 527 |
action == smon || |
720 |
if (write_config) |
| 528 |
action == sres || |
|
|
| 529 |
action == scolor) |
| 530 |
xf86writeConfigFile (newconfig, conf); |
721 |
xf86writeConfigFile (newconfig, conf); |
| 531 |
|
722 |
|
| 532 |
return EXIT_SUCCESS; |
723 |
return EXIT_SUCCESS; |