Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
6c241805
Commit
6c241805
authored
May 18, 2004
by
Warren Dukes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
inputStream updates from httpTest
git-svn-id:
https://svn.musicpd.org/mpd/trunk@1059
09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent
d4c7d6df
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
72 additions
and
38 deletions
+72
-38
inputStream.c
src/inputStream.c
+4
-0
inputStream.h
src/inputStream.h
+3
-0
inputStream_file.c
src/inputStream_file.c
+5
-0
inputStream_file.h
src/inputStream_file.h
+2
-0
inputStream_http.c
src/inputStream_http.c
+56
-38
inputStream_http.h
src/inputStream_http.h
+2
-0
No files found.
src/inputStream.c
View file @
6c241805
...
...
@@ -49,4 +49,8 @@ int closeInputStream(InputStream * inStream) {
int
inputStreamAtEOF
(
InputStream
*
inStream
)
{
return
inStream
->
atEOFFunc
(
inStream
);
}
int
bufferInputStream
(
InputStream
*
inStream
)
{
return
inStream
->
bufferFunc
(
inStream
);
}
/* vim:set shiftwidth=8 tabstop=8 expandtab: */
src/inputStream.h
View file @
6c241805
...
...
@@ -29,6 +29,7 @@ typedef size_t (* InputStreamReadFunc) (InputStream * inStream, void * ptr, size
size_t
nmemb
);
typedef
int
(
*
InputStreamCloseFunc
)
(
InputStream
*
inStream
);
typedef
int
(
*
InputStreamAtEOFFunc
)
(
InputStream
*
inStream
);
typedef
int
(
*
InputStreamBufferFunc
)
(
InputStream
*
inStream
);
struct
_InputStream
{
int
error
;
...
...
@@ -42,6 +43,7 @@ struct _InputStream {
InputStreamReadFunc
readFunc
;
InputStreamCloseFunc
closeFunc
;
InputStreamAtEOFFunc
atEOFFunc
;
InputStreamBufferFunc
bufferFunc
;
void
*
data
;
};
...
...
@@ -51,6 +53,7 @@ int openInputStream(InputStream * inStream, char * url);
int
seekInputStream
(
InputStream
*
inStream
,
long
offset
,
int
whence
);
int
closeInputStream
(
InputStream
*
inStream
);
int
inputStreamAtEOF
(
InputStream
*
inStream
);
int
bufferInputStream
(
InputStream
*
inStream
);
size_t
readFromInputStream
(
InputStream
*
inStream
,
void
*
ptr
,
size_t
size
,
size_t
nmemb
);
...
...
src/inputStream_file.c
View file @
6c241805
...
...
@@ -45,6 +45,7 @@ int inputStream_fileOpen(InputStream * inStream, char * filename) {
inStream
->
closeFunc
=
inputStream_fileClose
;
inStream
->
readFunc
=
inputStream_fileRead
;
inStream
->
atEOFFunc
=
inputStream_fileAtEOF
;
inStream
->
bufferFunc
=
inputStream_fileBuffer
;
return
0
;
}
...
...
@@ -85,4 +86,8 @@ int inputStream_fileClose(InputStream * inStream) {
int
inputStream_fileAtEOF
(
InputStream
*
inStream
)
{
return
feof
((
FILE
*
)
inStream
->
data
);
}
int
inputStream_fileBuffer
(
InputStream
*
inStream
)
{
return
0
;
}
/* vim:set shiftwidth=4 tabstop=8 expandtab: */
src/inputStream_file.h
View file @
6c241805
...
...
@@ -32,5 +32,7 @@ int inputStream_fileClose(InputStream * inStream);
int
inputStream_fileAtEOF
(
InputStream
*
inStream
);
int
inputStream_fileBuffer
(
InputStream
*
inStream
);
#endif
/* vim:set shiftwidth=8 tabstop=8 expandtab: */
src/inputStream_http.c
View file @
6c241805
...
...
@@ -423,6 +423,7 @@ int inputStream_httpOpen(InputStream * inStream, char * url) {
inStream
->
closeFunc
=
inputStream_httpClose
;
inStream
->
readFunc
=
inputStream_httpRead
;
inStream
->
atEOFFunc
=
inputStream_httpAtEOF
;
inStream
->
bufferFunc
=
inputStream_httpBuffer
;
inStream
->
offset
=
0
;
inStream
->
size
=
0
;
...
...
@@ -443,20 +444,71 @@ size_t inputStream_httpRead(InputStream * inStream, void * ptr, size_t size,
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
int
readed
=
0
;
int
inlen
=
size
*
nmemb
;
inputStream_httpBuffer
(
inStream
);
switch
(
data
->
connState
)
{
case
HTTP_CONN_STATE_OPEN
:
case
HTTP_CONN_STATE_CLOSED
:
break
;
default:
return
0
;
}
readed
=
inlen
>
data
->
buflen
?
data
->
buflen
:
inlen
;
memcpy
(
ptr
,
data
->
buffer
,
readed
);
data
->
buflen
-=
readed
;
memmove
(
data
->
buffer
,
data
->
buffer
+
readed
,
data
->
buflen
);
inStream
->
offset
+=
readed
;
return
readed
;
}
int
inputStream_httpClose
(
InputStream
*
inStream
)
{
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
switch
(
data
->
connState
)
{
case
HTTP_CONN_STATE_CLOSED
:
break
;
default:
close
(
data
->
sock
);
}
if
(
inStream
->
mime
)
free
(
inStream
->
mime
);
freeInputStreamHTTPData
(
data
);
return
0
;
}
int
inputStream_httpAtEOF
(
InputStream
*
inStream
)
{
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
switch
(
data
->
connState
)
{
case
HTTP_CONN_STATE_CLOSED
:
if
(
data
->
buflen
==
0
)
return
1
;
default:
return
0
;
}
}
int
inputStream_httpBuffer
(
InputStream
*
inStream
)
{
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
int
readed
=
0
;
fd_set
readSet
;
struct
timeval
tv
;
int
ret
;
if
(
data
->
connState
==
HTTP_CONN_STATE_REOPEN
)
{
if
(
initHTTPConnection
(
inStream
)
<
0
)
return
0
;
if
(
initHTTPConnection
(
inStream
)
<
0
)
return
-
1
;
}
if
(
data
->
connState
==
HTTP_CONN_STATE_INIT
)
{
if
(
finishHTTPInit
(
inStream
)
<
0
)
return
0
;
if
(
finishHTTPInit
(
inStream
)
<
0
)
return
-
1
;
}
if
(
data
->
connState
==
HTTP_CONN_STATE_HELLO
)
{
if
(
getHTTPHello
(
inStream
)
<
0
)
return
0
;
if
(
getHTTPHello
(
inStream
)
<
0
)
return
-
1
;
}
switch
(
data
->
connState
)
{
...
...
@@ -464,7 +516,7 @@ size_t inputStream_httpRead(InputStream * inStream, void * ptr, size_t size,
case
HTTP_CONN_STATE_CLOSED
:
break
;
default:
return
0
;
return
-
1
;
}
if
(
data
->
connState
==
HTTP_CONN_STATE_OPEN
&&
...
...
@@ -502,40 +554,6 @@ size_t inputStream_httpRead(InputStream * inStream, void * ptr, size_t size,
}
}
readed
=
inlen
>
data
->
buflen
?
data
->
buflen
:
inlen
;
memcpy
(
ptr
,
data
->
buffer
,
readed
);
data
->
buflen
-=
readed
;
memmove
(
data
->
buffer
,
data
->
buffer
+
readed
,
data
->
buflen
);
inStream
->
offset
+=
readed
;
return
readed
;
}
int
inputStream_httpClose
(
InputStream
*
inStream
)
{
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
switch
(
data
->
connState
)
{
case
HTTP_CONN_STATE_CLOSED
:
break
;
default:
close
(
data
->
sock
);
}
if
(
inStream
->
mime
)
free
(
inStream
->
mime
);
freeInputStreamHTTPData
(
data
);
return
0
;
}
int
inputStream_httpAtEOF
(
InputStream
*
inStream
)
{
InputStreamHTTPData
*
data
=
(
InputStreamHTTPData
*
)
inStream
->
data
;
switch
(
data
->
connState
)
{
case
HTTP_CONN_STATE_CLOSED
:
if
(
data
->
buflen
==
0
)
return
1
;
default:
return
0
;
}
}
/* vim:set shiftwidth=8 tabstop=8 expandtab: */
src/inputStream_http.h
View file @
6c241805
...
...
@@ -32,5 +32,7 @@ int inputStream_httpClose(InputStream * inStream);
int
inputStream_httpAtEOF
(
InputStream
*
inStream
);
int
inputStream_httpBuffer
(
InputStream
*
inStream
);
#endif
/* vim:set shiftwidth=8 tabstop=8 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment