[asterisk-commits] jrose: branch 1.8 r362079 - /branches/1.8/apps/app_meetme.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Apr 13 10:21:26 CDT 2012
Author: jrose
Date: Fri Apr 13 10:21:20 2012
New Revision: 362079
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=362079
Log:
Send relative path named recordings to the meetme directory instead of sounds
Prior to this patch, no effort was made to parse the path name to determine a proper
destination for recordings of MeetMe's r option. This fixes that.
Review: https://reviewboard.asterisk.org/r/1846/
Modified:
branches/1.8/apps/app_meetme.c
Modified: branches/1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/apps/app_meetme.c?view=diff&rev=362079&r1=362078&r2=362079
==============================================================================
--- branches/1.8/apps/app_meetme.c (original)
+++ branches/1.8/apps/app_meetme.c Fri Apr 13 10:21:20 2012
@@ -4876,6 +4876,31 @@
return 0;
}
+/*! \internal
+ * \brief creates directory structure and assigns absolute path from relative paths for filenames
+ *
+ * \param filename contains the absolute or relative path to the desired file
+ * \param buffer stores completed filename, absolutely must be a buffer of PATH_MAX length
+ */
+static void filename_parse(char *filename, char *buffer)
+{
+ char *slash;
+ if (ast_strlen_zero(filename)) {
+ ast_log(LOG_WARNING, "No file name was provided for a file save option.\n");
+ } else if (filename[0] != '/') {
+ snprintf(buffer, PATH_MAX, "%s/meetme/%s", ast_config_AST_SPOOL_DIR, filename);
+ } else {
+ ast_copy_string(buffer, filename, PATH_MAX);
+ }
+
+ slash = buffer;
+ if ((slash = strrchr(slash, '/'))) {
+ *slash = '\0';
+ ast_mkdir(buffer, 0777);
+ *slash = '/';
+ }
+}
+
static void *recordthread(void *args)
{
struct ast_conference *cnf = args;
@@ -4885,10 +4910,14 @@
int res = 0;
int x;
const char *oldrecordingfilename = NULL;
+ char filename_buffer[PATH_MAX];
if (!cnf || !cnf->lchan) {
pthread_exit(0);
}
+
+ filename_buffer[0] = '\0';
+ filename_parse(cnf->recordingfilename, filename_buffer);
ast_stopstream(cnf->lchan);
flags = O_CREAT | O_TRUNC | O_WRONLY;
@@ -4901,9 +4930,9 @@
AST_LIST_UNLOCK(&confs);
break;
}
- if (!s && cnf->recordingfilename && (cnf->recordingfilename != oldrecordingfilename)) {
- s = ast_writefile(cnf->recordingfilename, cnf->recordingformat, NULL, flags, 0, AST_FILE_MODE);
- oldrecordingfilename = cnf->recordingfilename;
+ if (!s && !(ast_strlen_zero(filename_buffer)) && (filename_buffer != oldrecordingfilename)) {
+ s = ast_writefile(filename_buffer, cnf->recordingformat, NULL, flags, 0, AST_FILE_MODE);
+ oldrecordingfilename = filename_buffer;
}
f = ast_read(cnf->lchan);
More information about the asterisk-commits
mailing list