dect
/
asterisk
Archived
13
0
Fork 0

Merged revisions 102576 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r102576 | tilghman | 2008-02-05 18:26:02 -0600 (Tue, 05 Feb 2008) | 4 lines

Move around some defines to unbreak ODBC storage.
(closes issue #11932)
 Reported by: snuffy

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@102602 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
tilghman 2008-02-06 03:05:00 +00:00
parent 127a06bb5a
commit fc43a9da2b
1 changed files with 36 additions and 37 deletions

View File

@ -1626,6 +1626,41 @@ static void rename_file(char *sfn, char *dfn)
}
#endif
#ifndef IMAP_STORAGE
/*! \brief
* A negative return value indicates an error.
* \note Should always be called with a lock already set on dir.
*/
static int last_message_index(struct ast_vm_user *vmu, char *dir)
{
int x;
unsigned char map[MAXMSGLIMIT] = "";
DIR *msgdir;
struct dirent *msgdirent;
int msgdirint;
/* Reading the entire directory into a file map scales better than
* doing a stat repeatedly on a predicted sequence. I suspect this
* is partially due to stat(2) internally doing a readdir(2) itself to
* find each file. */
msgdir = opendir(dir);
while ((msgdirent = readdir(msgdir))) {
if (sscanf(msgdirent->d_name, "msg%d", &msgdirint) == 1 && msgdirint < MAXMSGLIMIT)
map[msgdirint] = 1;
}
closedir(msgdir);
for (x = 0; x < vmu->maxmsg; x++) {
if (map[x] == 0)
break;
}
return x - 1;
}
#endif /*#ifndef IMAP_STORAGE*/
#endif /*#else of #ifdef ODBC_STORAGE*/
static int copy(char *infile, char *outfile)
{
int ifd;
@ -1718,41 +1753,6 @@ static void copy_plain_file(char *frompath, char *topath)
ast_variables_destroy(var);
}
#ifndef IMAP_STORAGE
/*! \brief
* A negative return value indicates an error.
* \note Should always be called with a lock already set on dir.
*/
static int last_message_index(struct ast_vm_user *vmu, char *dir)
{
int x;
unsigned char map[MAXMSGLIMIT] = "";
DIR *msgdir;
struct dirent *msgdirent;
int msgdirint;
/* Reading the entire directory into a file map scales better than
* doing a stat repeatedly on a predicted sequence. I suspect this
* is partially due to stat(2) internally doing a readdir(2) itself to
* find each file. */
msgdir = opendir(dir);
while ((msgdirent = readdir(msgdir))) {
if (sscanf(msgdirent->d_name, "msg%d", &msgdirint) == 1 && msgdirint < MAXMSGLIMIT)
map[msgdirint] = 1;
}
closedir(msgdir);
for (x = 0; x < vmu->maxmsg; x++) {
if (map[x] == 0)
break;
}
return x - 1;
}
#endif /*#ifndef IMAP_STORAGE*/
#endif /*#else of #ifdef ODBC_STORAGE*/
#ifndef ODBC_STORAGE
static int vm_delete(char *file)
{
char *txt;
@ -1770,7 +1770,6 @@ static int vm_delete(char *file)
unlink(txt);
return ast_filedelete(file, NULL);
}
#endif
static int inbuf(struct baseio *bio, FILE *fi)
{
@ -4521,7 +4520,7 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st
}
/* Remove surrogate file */
DELETE(tmpdir, curmsg, msgfile);
vm_delete(msgfile);
}
/* If anything failed above, we still have this list to free */