comparison libmpdemux/stream_file.c @ 15461:7c272bfba96f

fixed file:// syntax using newly introduced -string- urlpart
author nicodvb
date Sat, 14 May 2005 12:50:59 +0000
parents de27bb6ff3ec
children ec02252fbaa6
comparison
equal deleted inserted replaced
15460:fa8c3f5b7ec2 15461:7c272bfba96f
12 #include "../m_option.h" 12 #include "../m_option.h"
13 #include "../m_struct.h" 13 #include "../m_struct.h"
14 14
15 static struct stream_priv_s { 15 static struct stream_priv_s {
16 char* filename; 16 char* filename;
17 char* dummy_hostname; 17 char *filename2;
18 } stream_priv_dflts = { 18 } stream_priv_dflts = {
19 NULL, NULL 19 NULL, NULL
20 }; 20 };
21 21
22 #define ST_OFF(f) M_ST_OFF(struct stream_priv_s,f) 22 #define ST_OFF(f) M_ST_OFF(struct stream_priv_s,f)
23 /// URL definition 23 /// URL definition
24 static m_option_t stream_opts_fields[] = { 24 static m_option_t stream_opts_fields[] = {
25 {"filename", ST_OFF(filename), CONF_TYPE_STRING, 0, 0 ,0, NULL}, 25 {"string", ST_OFF(filename), CONF_TYPE_STRING, 0, 0 ,0, NULL},
26 {"hostname", ST_OFF(dummy_hostname), CONF_TYPE_STRING, 0, 0, 0, NULL }, 26 {"filename", ST_OFF(filename2), CONF_TYPE_STRING, 0, 0 ,0, NULL},
27 { NULL, NULL, 0, 0, 0, 0, NULL } 27 { NULL, NULL, 0, 0, 0, 0, NULL }
28 }; 28 };
29 static struct m_struct_st stream_opts = { 29 static struct m_struct_st stream_opts = {
30 "file", 30 "file",
31 sizeof(struct stream_priv_s), 31 sizeof(struct stream_priv_s),
69 69
70 static int open_f(stream_t *stream,int mode, void* opts, int* file_format) { 70 static int open_f(stream_t *stream,int mode, void* opts, int* file_format) {
71 int f; 71 int f;
72 mode_t m = 0; 72 mode_t m = 0;
73 off_t len; 73 off_t len;
74 unsigned char *filename;
74 struct stream_priv_s* p = (struct stream_priv_s*)opts; 75 struct stream_priv_s* p = (struct stream_priv_s*)opts;
75 76
76 if(mode == STREAM_READ) 77 if(mode == STREAM_READ)
77 m = O_RDONLY; 78 m = O_RDONLY;
78 else if(mode == STREAM_WRITE) 79 else if(mode == STREAM_WRITE)
81 mp_msg(MSGT_OPEN,MSGL_ERR, "[file] Unknown open mode %d\n",mode); 82 mp_msg(MSGT_OPEN,MSGL_ERR, "[file] Unknown open mode %d\n",mode);
82 m_struct_free(&stream_opts,opts); 83 m_struct_free(&stream_opts,opts);
83 return STREAM_UNSUPORTED; 84 return STREAM_UNSUPORTED;
84 } 85 }
85 86
86 if(!p->filename) { 87 if(p->filename)
88 filename = p->filename;
89 else if(p->filename2)
90 filename = p->filename2;
91 else
92 filename = NULL;
93 if(!filename) {
87 mp_msg(MSGT_OPEN,MSGL_ERR, "[file] No filename\n"); 94 mp_msg(MSGT_OPEN,MSGL_ERR, "[file] No filename\n");
88 m_struct_free(&stream_opts,opts); 95 m_struct_free(&stream_opts,opts);
89 return STREAM_ERROR; 96 return STREAM_ERROR;
90 } 97 }
91 98
92 #if defined(__CYGWIN__)|| defined(__MINGW32__) 99 #if defined(__CYGWIN__)|| defined(__MINGW32__)
93 m |= O_BINARY; 100 m |= O_BINARY;
94 #endif 101 #endif
95 102
96 if(!strcmp(p->filename,"-")){ 103 if(!strcmp(filename,"-")){
97 if(mode == STREAM_READ) { 104 if(mode == STREAM_READ) {
98 // read from stdin 105 // read from stdin
99 mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_ReadSTDIN); 106 mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_ReadSTDIN);
100 f=0; // 0=stdin 107 f=0; // 0=stdin
101 #ifdef __MINGW32__ 108 #ifdef __MINGW32__
107 #ifdef __MINGW32__ 114 #ifdef __MINGW32__
108 setmode(fileno(stdout),O_BINARY); 115 setmode(fileno(stdout),O_BINARY);
109 #endif 116 #endif
110 } 117 }
111 } else { 118 } else {
112 f=open(p->filename,m); 119 f=open(filename,m);
113 if(f<0) { 120 if(f<0) {
114 mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,p->filename); 121 mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,filename);
115 m_struct_free(&stream_opts,opts); 122 m_struct_free(&stream_opts,opts);
116 return STREAM_ERROR; 123 return STREAM_ERROR;
117 } 124 }
118 } 125 }
119 126