|
|
|
@ -1621,6 +1621,7 @@ static void copy_file(char *frompath, char *topath)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 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)
|
|
|
|
|
{
|
|
|
|
@ -1630,9 +1631,6 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
|
|
|
|
|
struct dirent *msgdirent;
|
|
|
|
|
int msgdirint;
|
|
|
|
|
|
|
|
|
|
if (vm_lock_path(dir))
|
|
|
|
|
return ERROR_LOCK_PATH;
|
|
|
|
|
|
|
|
|
|
/* 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
|
|
|
|
@ -1648,7 +1646,6 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
|
|
|
|
|
if (map[x] == 0)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
ast_unlock_path(dir);
|
|
|
|
|
|
|
|
|
|
return x - 1;
|
|
|
|
|
}
|
|
|
|
|