Lines 45-50
Link Here
|
45 |
{"driver", no_argument, 0, 'd'}, |
45 |
{"driver", no_argument, 0, 'd'}, |
46 |
{"nosetup", no_argument, 0, 'n'}, |
46 |
{"nosetup", no_argument, 0, 'n'}, |
47 |
{"help", no_argument, 0, 'h'}, |
47 |
{"help", no_argument, 0, 'h'}, |
|
|
48 |
{"setdrv", required_argument, 0, 's' }, |
48 |
{0, no_argument, 0, 0} |
49 |
{0, no_argument, 0, 0} |
49 |
}; |
50 |
}; |
50 |
|
51 |
|
Lines 65-73
Link Here
|
65 |
int param = 0; |
66 |
int param = 0; |
66 |
int driver = 0; |
67 |
int driver = 0; |
67 |
int nosetup = 0; |
68 |
int nosetup = 0; |
|
|
69 |
int setdrv = 0; |
70 |
unsigned char drv_name[51]; |
68 |
const char *cmdline; |
71 |
const char *cmdline; |
69 |
|
72 |
|
70 |
while ((c = getopt_long (argc, argv, "cpdnh", longopts, 0)) != -1) |
73 |
while ((c = getopt_long (argc, argv, "cpdnhs:", longopts, 0)) != -1) |
71 |
switch (c) { |
74 |
switch (c) { |
72 |
case 'c': |
75 |
case 'c': |
73 |
config = 1; |
76 |
config = 1; |
Lines 83-88
Link Here
|
83 |
break; |
86 |
break; |
84 |
case 'h': |
87 |
case 'h': |
85 |
usage (stdout, EXIT_SUCCESS); |
88 |
usage (stdout, EXIT_SUCCESS); |
|
|
89 |
break; |
90 |
case 's': |
91 |
strncpy(drv_name,optarg,50); |
92 |
setdrv=1; |
93 |
break; |
86 |
default: |
94 |
default: |
87 |
usage (stderr, EXIT_FAILURE); |
95 |
usage (stderr, EXIT_FAILURE); |
88 |
} |
96 |
} |
Lines 101-107
Link Here
|
101 |
XF86ConfigPtr conf; |
109 |
XF86ConfigPtr conf; |
102 |
if (!(conf = xf86readConfigFile ())) |
110 |
if (!(conf = xf86readConfigFile ())) |
103 |
error (1, errno, "%s: unable to parse config file", filename); |
111 |
error (1, errno, "%s: unable to parse config file", filename); |
104 |
xf86closeConfigFile (); |
|
|
105 |
|
112 |
|
106 |
const char *drivername = |
113 |
const char *drivername = |
107 |
conf->conf_layout_lst->lay_adjacency_lst->adj_screen->scrn_device->dev_driver; |
114 |
conf->conf_layout_lst->lay_adjacency_lst->adj_screen->scrn_device->dev_driver; |
Lines 114-119
Link Here
|
114 |
if (nosetup == 0) { |
121 |
if (nosetup == 0) { |
115 |
char *path; |
122 |
char *path; |
116 |
|
123 |
|
|
|
124 |
if ( setdrv == 1) { |
125 |
conf->conf_layout_lst->lay_adjacency_lst->adj_screen->scrn_device->dev_driver=strdup(drv_name); |
126 |
xf86writeConfigFile ( filename, conf ); |
127 |
} |
117 |
if (asprintf (&path, "%s/%s", DRVDIR, drivername) < 0) |
128 |
if (asprintf (&path, "%s/%s", DRVDIR, drivername) < 0) |
118 |
error (1, errno, "asprintf"); |
129 |
error (1, errno, "asprintf"); |
119 |
execl (path, drivername, param ? filename : NULL, NULL); |
130 |
execl (path, drivername, param ? filename : NULL, NULL); |
Lines 123-128
Link Here
|
123 |
execl (path, "x11", NULL); |
134 |
execl (path, "x11", NULL); |
124 |
}; |
135 |
}; |
125 |
|
136 |
|
|
|
137 |
xf86closeConfigFile (); |
126 |
/* error (1, errno, "execl: %s", path); */ |
138 |
/* error (1, errno, "execl: %s", path); */ |
127 |
return 1; |
139 |
return 1; |
128 |
} |
140 |
} |