char targ[256];
char buf[256];
char buf2[256];
- char *dirs[2];
DIR *dp;
struct dirent *d;
extract_token(buf, mname, 0, '|', sizeof buf);
- dirs[0] = strdup(ctdl_message_dir);
- dirs[1] = strdup(ctdl_hlp_dir);
-
- snprintf(buf2, sizeof buf2, "%s.%d.%d",
- buf, CC->cs_clientdev, CC->cs_clienttyp);
+ snprintf(buf2, sizeof buf2, "%s.%d.%d", buf, CC->cs_clientdev, CC->cs_clienttyp);
/* If the client requested "?" then produce a listing */
if (!strcmp(buf, "?")) {
cprintf("%d %s\n", LISTING_FOLLOWS, buf);
- dp = opendir(dirs[1]);
+ dp = opendir(ctdl_message_dir);
if (dp != NULL) {
while (d = readdir(dp), d != NULL) {
if (d->d_name[0] != '.') {
closedir(dp);
}
cprintf("000\n");
- free(dirs[0]);
- free(dirs[1]);
return;
}
/* Otherwise, look for the requested file by name. */
- else {
- mesg_locate(targ, sizeof targ, buf2, 2, (const ccharp*)dirs);
- if (IsEmptyStr(targ)) {
- snprintf(buf2, sizeof buf2, "%s.%d",
- buf, CC->cs_clientdev);
- mesg_locate(targ, sizeof targ, buf2, 2,
- (const ccharp*)dirs);
- if (IsEmptyStr(targ)) {
- mesg_locate(targ, sizeof targ, buf, 2,
- (const ccharp*)dirs);
- }
- }
- }
-
- free(dirs[0]);
- free(dirs[1]);
-
- if (IsEmptyStr(targ)) {
- cprintf("%d '%s' not found. (Searching in %s and %s)\n",
- ERROR + FILE_NOT_FOUND,
- mname,
- ctdl_message_dir,
- ctdl_hlp_dir
- );
- return;
- }
-
+ snprintf(targ, sizeof targ, "%s/%s", ctdl_message_dir, buf);
mfp = fopen(targ, "r");
if (mfp==NULL) {
cprintf("%d Cannot open '%s': %s\n",
- ERROR + INTERNAL_ERROR, targ, strerror(errno));
+ ERROR + FILE_NOT_FOUND, targ, strerror(errno));
return;
}
cprintf("%d %s\n", LISTING_FOLLOWS,buf);
FILE *mfp;
char targ[256];
char buf[256];
- char *dirs[2];
int a;
unbuffer_output();
if (buf[a] == '/') buf[a] = '.';
}
- dirs[0] = strdup(ctdl_message_dir);
- dirs[1] = strdup(ctdl_hlp_dir);
-
- mesg_locate(targ, sizeof targ, buf, 2, (const ccharp*)dirs);
- free(dirs[0]);
- free(dirs[1]);
-
if (IsEmptyStr(targ)) {
- snprintf(targ, sizeof targ,
- "%s/%s",
- ctdl_hlp_dir, buf);
+ snprintf(targ, sizeof targ, "%s/%s", ctdl_message_dir, buf);
}
- mfp = fopen(targ,"w");
+ mfp = fopen(targ, "w");
if (mfp==NULL) {
cprintf("%d Cannot open '%s': %s\n",
ERROR + INTERNAL_ERROR, targ, strerror(errno));
} while(string[0]=='#');
return(strlen(string));
}
-
-
-
-
-/*
- * mesg_locate() - locate a message or help file, case insensitive
- */
-void mesg_locate(char *targ, size_t n, const char *searchfor,
- int numdirs, const char * const *dirs)
-{
- int a;
- char buf[SIZ];
- struct stat test;
-
- for (a=0; a<numdirs; ++a) {
- snprintf(buf, sizeof buf, "%s/%s", dirs[a], searchfor);
- if (!stat(buf, &test)) {
- snprintf(targ, n, "%s/%s", dirs[a], searchfor);
- return;
- }
- }
- strcpy(targ,"");
-}
-
-
char ctdl_data_dir[PATH_MAX]="data";
char ctdl_dspam_dir[PATH_MAX]="dspam";
char ctdl_file_dir[PATH_MAX]="files";
-char ctdl_hlp_dir[PATH_MAX]="help";
char ctdl_shared_dir[PATH_MAX]="";
char ctdl_image_dir[PATH_MAX]="images";
char ctdl_info_dir[PATH_MAX]="info";
COMPUTE_DIRECTORY(ctdl_message_dir);
StripSlashes(ctdl_message_dir, 1);
-#ifndef HAVE_HELP_DIR
- basedir=ctdldir;
-#else
- basedir=HELP_DIR;
-#endif
- COMPUTE_DIRECTORY(ctdl_hlp_dir);
- StripSlashes(ctdl_hlp_dir, 1);
- COMPUTE_DIRECTORY(ctdl_shared_dir);
- StripSlashes(ctdl_shared_dir, 1);
-
#ifndef HAVE_DATA_DIR
basedir=ctdldir;
#else
DBG_PRINT(ctdl_data_dir);
DBG_PRINT(ctdl_dspam_dir);
DBG_PRINT(ctdl_file_dir);
- DBG_PRINT(ctdl_hlp_dir);
DBG_PRINT(ctdl_image_dir);
DBG_PRINT(ctdl_info_dir);
DBG_PRINT(ctdl_key_dir);
{
int rv = 0;
rv += create_dir(ctdl_message_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
- rv += create_dir(ctdl_hlp_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
rv += create_dir(ctdl_bb_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
rv += create_dir(ctdl_file_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
rv += create_dir(ctdl_spool_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);