equal
deleted
inserted
replaced
85 |
85 |
86 DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err); |
86 DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err); |
87 delete newd; |
87 delete newd; |
88 } |
88 } |
89 } |
89 } |
90 error("Couldn't find any suitable %s driver", GetDriverTypeName(type)); |
90 usererror("Couldn't find any suitable %s driver", GetDriverTypeName(type)); |
91 } else { |
91 } else { |
92 char *parm; |
92 char *parm; |
93 char buffer[256]; |
93 char buffer[256]; |
94 const char *parms[32]; |
94 const char *parms[32]; |
95 |
95 |
123 Driver *newd = d->CreateInstance(); |
123 Driver *newd = d->CreateInstance(); |
124 |
124 |
125 const char *err = newd->Start(parms); |
125 const char *err = newd->Start(parms); |
126 if (err != NULL) { |
126 if (err != NULL) { |
127 delete newd; |
127 delete newd; |
128 error("Unable to load driver '%s'. The error was: %s", d->name, err); |
128 usererror("Unable to load driver '%s'. The error was: %s", d->name, err); |
129 } |
129 } |
130 |
130 |
131 DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name); |
131 DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name); |
132 delete *GetActiveDriver(type); |
132 delete *GetActiveDriver(type); |
133 *GetActiveDriver(type) = newd; |
133 *GetActiveDriver(type) = newd; |
134 return newd; |
134 return newd; |
135 } |
135 } |
136 error("No such %s driver: %s\n", GetDriverTypeName(type), buffer); |
136 usererror("No such %s driver: %s\n", GetDriverTypeName(type), buffer); |
137 } |
137 } |
138 } |
138 } |
139 |
139 |
140 /** |
140 /** |
141 * Register a driver internally, based on its name. |
141 * Register a driver internally, based on its name. |
154 /* Prefix the name with driver type to make it unique */ |
154 /* Prefix the name with driver type to make it unique */ |
155 char buf[32]; |
155 char buf[32]; |
156 strecpy(buf, GetDriverTypeName(type), lastof(buf)); |
156 strecpy(buf, GetDriverTypeName(type), lastof(buf)); |
157 strecpy(buf + 5, name, lastof(buf)); |
157 strecpy(buf + 5, name, lastof(buf)); |
158 |
158 |
159 #if !defined(NDEBUG) || defined(WITH_ASSERT) |
159 std::pair<Drivers::iterator, bool> P = GetDrivers().insert(Drivers::value_type(buf, this)); |
160 /* NDEBUG disables asserts and gives a warning: unused variable 'P' */ |
|
161 std::pair<Drivers::iterator, bool> P = |
|
162 #endif /* !NDEBUG */ |
|
163 GetDrivers().insert(Drivers::value_type(buf, this)); |
|
164 assert(P.second); |
160 assert(P.second); |
165 } |
161 } |
166 |
162 |
167 /** |
163 /** |
168 * Build a human readable list of available drivers, grouped by type. |
164 * Build a human readable list of available drivers, grouped by type. |