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:
parent
127a06bb5a
commit
fc43a9da2b
|
@ -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 */
|
||||
|
|
Reference in New Issue