Skip to content

Commit 8e62c72

Browse files
committed
added filename, basename & dirname to exec_record_done
1 parent 8608faa commit 8e62c72

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

ngx_rtmp_exec_module.c

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,10 @@ typedef struct {
124124

125125
typedef struct {
126126
ngx_uint_t flags;
127-
ngx_str_t path;
127+
ngx_str_t path; /* /tmp/rec/myfile-123.flv */
128+
ngx_str_t filename; /* myfile-123.flv */
129+
ngx_str_t basename; /* myfile-123 */
130+
ngx_str_t dirname; /* /tmp/rec */
128131
ngx_str_t recorder;
129132
u_char name[NGX_RTMP_MAX_NAME];
130133
u_char args[NGX_RTMP_MAX_ARGS];
@@ -378,6 +381,18 @@ static ngx_rtmp_eval_t ngx_rtmp_exec_event_specific_eval[] = {
378381
ngx_rtmp_exec_eval_ctx_str,
379382
offsetof(ngx_rtmp_exec_ctx_t, path) },
380383

384+
{ ngx_string("filename"),
385+
ngx_rtmp_exec_eval_ctx_str,
386+
offsetof(ngx_rtmp_exec_ctx_t, filename) },
387+
388+
{ ngx_string("basename"),
389+
ngx_rtmp_exec_eval_ctx_str,
390+
offsetof(ngx_rtmp_exec_ctx_t, basename) },
391+
392+
{ ngx_string("dirname"),
393+
ngx_rtmp_exec_eval_ctx_str,
394+
offsetof(ngx_rtmp_exec_ctx_t, dirname) },
395+
381396
{ ngx_string("recorder"),
382397
ngx_rtmp_exec_eval_ctx_str,
383398
offsetof(ngx_rtmp_exec_ctx_t, recorder) },
@@ -1290,6 +1305,8 @@ ngx_rtmp_exec_close_stream(ngx_rtmp_session_t *s, ngx_rtmp_close_stream_t *v)
12901305
static ngx_int_t
12911306
ngx_rtmp_exec_record_done(ngx_rtmp_session_t *s, ngx_rtmp_record_done_t *v)
12921307
{
1308+
u_char c;
1309+
ngx_uint_t ext, dir;
12931310
ngx_rtmp_exec_ctx_t *ctx;
12941311
ngx_rtmp_exec_app_conf_t *eacf;
12951312

@@ -1310,6 +1327,29 @@ ngx_rtmp_exec_record_done(ngx_rtmp_session_t *s, ngx_rtmp_record_done_t *v)
13101327
ctx->recorder = v->recorder;
13111328
ctx->path = v->path;
13121329

1330+
ctx->dirname.data = ctx->path.data;
1331+
ctx->dirname.len = 0;
1332+
1333+
for (dir = ctx->path.len; dir > 0; dir--) {
1334+
c = ctx->path.data[dir - 1];
1335+
if (c == '/' || c == '\\') {
1336+
ctx->dirname.len = dir - 1;
1337+
break;
1338+
}
1339+
}
1340+
1341+
ctx->filename.data = ctx->path.data + dir;
1342+
ctx->filename.len = ctx->path.len - dir;
1343+
1344+
ctx->basename = ctx->filename;
1345+
1346+
for (ext = ctx->filename.len; ext > 0; ext--) {
1347+
if (ctx->filename.data[ext - 1] == '.') {
1348+
ctx->basename.len = ext - 1;
1349+
break;
1350+
}
1351+
}
1352+
13131353
ngx_rtmp_exec_unmanaged(s, &eacf->conf[NGX_RTMP_EXEC_RECORD_DONE],
13141354
"record_done");
13151355

0 commit comments

Comments
 (0)