@@ -314,6 +314,7 @@ dt_rval_spec_slen (void *arg, char *match, char *output, size_t max_size,
314
314
{
315
315
return "0" ;
316
316
}
317
+
317
318
return output ;
318
319
}
319
320
@@ -2186,11 +2187,39 @@ rt_af_htget (void *arg, char *match, char *output, size_t max_size,
2186
2187
2187
2188
}
2188
2189
2190
+ static char *
2191
+ dt_rval_setstr2 (void * arg , char * match , char * output , size_t max_size ,
2192
+ void * mppd )
2193
+ {
2194
+
2195
+ __d_drt_h _mppd = (__d_drt_h ) mppd ;
2196
+
2197
+ char * p_o = _mppd -> fp_rval1 (arg , match , output , max_size ,
2198
+ ((__d_drt_h ) mppd )-> mppd_next );
2199
+
2200
+ if (NULL == p_o )
2201
+ {
2202
+ goto _ex ;
2203
+ }
2204
+
2205
+ if (0 == _mppd -> hdl -> g_proc0 (arg , _mppd -> chb0 , p_o ))
2206
+ {
2207
+ print_str ("ERROR: dt_rval_setstr: unable to set value, key '%s'\n" ,
2208
+ _mppd -> chb0 );
2209
+ }
2210
+
2211
+ _ex : ;
2212
+
2213
+ output [0 ] = 0x0 ;
2214
+ output [1 ] = 0x31 ;
2215
+
2216
+ return output ;
2217
+ }
2218
+
2189
2219
static char *
2190
2220
dt_rval_setstr (void * arg , char * match , char * output , size_t max_size ,
2191
2221
void * mppd )
2192
2222
{
2193
-
2194
2223
__d_drt_h _mppd = (__d_drt_h ) mppd ;
2195
2224
2196
2225
if (0 == _mppd -> hdl -> g_proc0 (arg , _mppd -> chb0 , _mppd -> chb1 ))
@@ -2218,33 +2247,48 @@ rt_af_setstr (void *arg, char *match, char *output, size_t max_size,
2218
2247
2219
2248
if (NULL == ptr || ptr [0 ] == 0x0 )
2220
2249
{
2221
- print_str ("ERROR: rt_af_setstr: could not key: %s\n" , match );
2250
+ print_str ("ERROR: rt_af_setstr: could not resolve key: %s\n" , match );
2222
2251
return NULL ;
2223
2252
}
2224
2253
2225
2254
if (l_next_ref == NULL )
2226
2255
{
2227
- print_str ("ERROR: rt_af_setstr: no value given" );
2256
+ print_str ("ERROR: rt_af_setstr: no value given\n " );
2228
2257
return NULL ;
2229
2258
}
2230
2259
2231
2260
mppd -> chb0 = strdup (ptr );
2232
2261
2233
- ptr = l_mppd_shell_ex ((char * ) l_next_ref , mppd -> tp_b0 , sizeof (mppd -> tp_b0 ),
2234
- & l_next_ref ,
2235
- LMS_EX_L ,
2236
- LMS_EX_R , F_MPPD_SHX_TZERO );
2262
+ mppd -> mppd_next = l_mppd_create_copy (mppd );
2237
2263
2238
- if (NULL == ptr || ptr [0 ] == 0x0 )
2264
+ mppd -> fp_rval1 = mppd -> hdl -> g_proc1_lookup (arg , (char * ) l_next_ref , output ,
2265
+ max_size , mppd -> mppd_next );
2266
+
2267
+ if (NULL == mppd -> fp_rval1 )
2239
2268
{
2240
- print_str ("ERROR: rt_af_setstr: could not resolve value: %s\n" ,
2241
- (char * ) l_next_ref );
2242
- return NULL ;
2269
+
2270
+ ptr = l_mppd_shell_ex ((char * ) l_next_ref , mppd -> tp_b0 ,
2271
+ sizeof (mppd -> tp_b0 ), & l_next_ref ,
2272
+ LMS_EX_L ,
2273
+ LMS_EX_R , F_MPPD_SHX_TZERO );
2274
+
2275
+ if (NULL == ptr || ptr [0 ] == 0x0 )
2276
+ {
2277
+ print_str ("ERROR: rt_af_setstr: could not resolve value: %s\n" ,
2278
+ (char * ) l_next_ref );
2279
+ return NULL ;
2280
+ }
2281
+
2282
+ mppd -> chb1 = strdup (ptr );
2283
+
2284
+ return as_ref_to_val_lk (match , dt_rval_setstr , mppd , "%s" );
2243
2285
}
2286
+ else
2287
+ {
2244
2288
2245
- mppd -> chb1 = strdup ( ptr );
2289
+ return as_ref_to_val_lk ( match , dt_rval_setstr2 , mppd , "%s" );
2246
2290
2247
- return as_ref_to_val_lk ( match , dt_rval_setstr , mppd , "%s" );
2291
+ }
2248
2292
2249
2293
}
2250
2294
0 commit comments