*** proftpd-1.2.0pre10/modules/mod_ls.c Tue Dec 28 16:54:44 1999 --- proftpd-1.2.0pre10-scip/modules/mod_ls.c Mon Dec 11 20:29:44 2000 *************** *** 39,44 **** --- 39,45 ---- static int matches = 0; static char *default_options; + static char *force_default_options; static int showdotfiles,showsymlinks,showsymlinks_hold; static int cmp(const void *a, const void *b); static char *fakeuser,*fakegroup; *************** *** 814,822 **** if(clearflags) opt_a = opt_C = opt_d = opt_F = opt_r = opt_R = opt_t = opt_STAT = 0; ! if(default_options) ! _parse_options(&default_options,&glob_flags); ! _parse_options(&arg,&glob_flags); /* open data connection */ if(!opt_STAT) { --- 815,837 ---- if(clearflags) opt_a = opt_C = opt_d = opt_F = opt_r = opt_R = opt_t = opt_STAT = 0; ! /* if ForceLsDefaultOptions is TRUE and if LsDefaultOptions is set to something */ ! if(force_default_options) { ! if(default_options) { ! /* reset arg if it is an option! */ ! if(arg && *arg == '-') ! arg = ""; ! log_debug(DEBUG3, "Forcing default_options: %s, arg: %s", default_options, arg); ! _parse_options(&default_options,&glob_flags); ! } ! else ! _parse_options(&arg,&glob_flags); ! } ! else { ! if(default_options) ! _parse_options(&default_options,&glob_flags); ! _parse_options(&arg,&glob_flags); ! } /* open data connection */ if(!opt_STAT) { *************** *** 1120,1125 **** --- 1135,1141 ---- showsymlinks = 1; default_options = get_param_ptr(TOPLEVEL_CONF,"LsDefaultOptions",FALSE); + force_default_options = get_param_ptr(TOPLEVEL_CONF,"ForceLsDefaultOptions",FALSE); fakeuser = get_param_ptr(TOPLEVEL_CONF,"DirFakeUser",FALSE); fakegroup = get_param_ptr(TOPLEVEL_CONF,"DirFakeGroup",FALSE); _fakemode = (long)get_param_int(TOPLEVEL_CONF,"DirFakeMode",FALSE); *************** *** 1132,1137 **** --- 1148,1154 ---- fakemodep = 0; err = dolist(cmd,cmd->arg,TRUE); + if(XFER_ABORTED) { data_abort(0,0); err = -1; *************** *** 1168,1173 **** --- 1185,1191 ---- showsymlinks = 1; default_options = get_param_ptr(TOPLEVEL_CONF,"LsDefaultOptions",FALSE); + force_default_options = get_param_ptr(TOPLEVEL_CONF,"ForceLsDefaultOptions",FALSE); fakeuser = get_param_ptr(TOPLEVEL_CONF,"DirFakeUser",FALSE); fakegroup = get_param_ptr(TOPLEVEL_CONF,"DirFakeGroup",FALSE); _fakemode = (long)get_param_int(TOPLEVEL_CONF,"DirFakeMode",FALSE); *************** *** 1184,1189 **** --- 1202,1208 ---- add_response(R_211,"status of %s:",arg); dolist(cmd,cmd->arg,FALSE); + add_response(R_211,"End of Status"); return HANDLED(cmd); } *************** *** 1412,1417 **** --- 1431,1446 ---- return HANDLED(cmd); } + MODRET set_forcelsdefaultoptions(cmd_rec *cmd) + { + CHECK_ARGS(cmd,1); + CHECK_CONF(cmd,CONF_ROOT|CONF_VIRTUAL|CONF_ANON|CONF_GLOBAL); + + add_config_param_str("ForceLsDefaultOptions",1,cmd->argv[1]); + + return HANDLED(cmd); + } + MODRET set_showdotfiles(cmd_rec *cmd) { int b; *************** *** 1431,1436 **** --- 1460,1466 ---- { "DirFakeGroup", set_dirfakegroup, NULL }, { "DirFakeMode", set_dirfakemode, NULL }, { "LsDefaultOptions", set_lsdefaultoptions, NULL }, + { "ForceLsDefaultOptions", set_forcelsdefaultoptions, NULL }, { "ShowDotFiles", set_showdotfiles, NULL }, { NULL, NULL, NULL } };