You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(27) |
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
(3) |
Jun
|
Jul
(2) |
Aug
|
Sep
(5) |
Oct
(1) |
Nov
|
Dec
(2) |
| 2008 |
Jan
(3) |
Feb
(1) |
Mar
(5) |
Apr
(3) |
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
|
From: <ia...@us...> - 2008-11-03 07:17:29
|
Revision: 441
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=441&view=rev
Author: iacat
Date: 2008-11-03 07:17:17 +0000 (Mon, 03 Nov 2008)
Log Message:
-----------
fix a small bug, set default value correctly
Modified Paths:
--------------
comicview/trunk/chrome/content/comicview/comicview.js
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2008-08-15 17:00:49 UTC (rev 440)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2008-11-03 07:17:17 UTC (rev 441)
@@ -17,10 +17,10 @@
var prefservice = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefService);
var prefs = prefservice.getBranch("");
- if(prefs.getCharPref(MPLAYER_PREF) != "mplayer") {
+ if(prefs.getCharPref(MPLAYER_PREF) == "") {
prefs.setCharPref(MPLAYER_PREF, "mplayer");
}
- if(prefs.getCharPref(TOTEM_PREF) != "totem") {
+ if(prefs.getCharPref(TOTEM_PREF) == "") {
prefs.setCharPref(TOTEM_PREF, "totem");
}
/*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-08-15 17:00:52
|
Revision: 440
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=440&view=rev
Author: pupilzeng
Date: 2008-08-15 17:00:49 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
* install.rdf: bump the max supported firefox version to 3.0.*
Modified Paths:
--------------
comicview/trunk/ChangeLog
comicview/trunk/install.rdf
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2008-06-14 13:16:25 UTC (rev 439)
+++ comicview/trunk/ChangeLog 2008-08-15 17:00:49 UTC (rev 440)
@@ -1,3 +1,7 @@
+2008-08-15 Shixin Zeng <zen...@gm...>
+
+ * install.rdf: bump the max supported firefox version to 3.0.*
+
2008-01-09 Shixin Zeng <zen...@gm...>
* chrome/content/comicview/comicview.js:
Modified: comicview/trunk/install.rdf
===================================================================
--- comicview/trunk/install.rdf 2008-06-14 13:16:25 UTC (rev 439)
+++ comicview/trunk/install.rdf 2008-08-15 17:00:49 UTC (rev 440)
@@ -14,7 +14,7 @@
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
- <em:maxVersion>3.0.0.*</em:maxVersion>
+ <em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-06-14 13:16:35
|
Revision: 439
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=439&view=rev
Author: iacat
Date: 2008-06-14 06:16:25 -0700 (Sat, 14 Jun 2008)
Log Message:
-----------
vodfs_readdir() get right filename
Modified Paths:
--------------
truran-xine/branches/fuse/trunk/src/fuse/vodfs.c
Modified: truran-xine/branches/fuse/trunk/src/fuse/vodfs.c
===================================================================
--- truran-xine/branches/fuse/trunk/src/fuse/vodfs.c 2008-04-27 12:18:08 UTC (rev 438)
+++ truran-xine/branches/fuse/trunk/src/fuse/vodfs.c 2008-06-14 13:16:25 UTC (rev 439)
@@ -105,9 +105,9 @@
str1[c1-c2] = '\0';
if (url_parse(str1, &tmpurl) == 0) {
play->uri[i] = strdup(str1);
- str2 = strdup(rindex(tmpurl.filepath, '.'));
+ str2 = strdup(rindex(tmpurl.filepath, '\\')+1);
play->playname[i] = malloc(MAXNAMELEN);
- sprintf(play->playname[i], "%d%s", i, str2);
+ sprintf(play->playname[i], "%s", str2);
play->ct = i+1;
free(str2);
free(str1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-04-27 12:18:20
|
Revision: 438
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=438&view=rev
Author: iacat
Date: 2008-04-27 05:18:08 -0700 (Sun, 27 Apr 2008)
Log Message:
-----------
autodetect mplayer/totem location
Modified Paths:
--------------
comicview/trunk/chrome/content/comicview/comicview.js
comicview/trunk/chrome/content/comicview/options.xul
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2008-04-26 06:48:37 UTC (rev 437)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2008-04-27 12:18:08 UTC (rev 438)
@@ -18,10 +18,10 @@
getService(Components.interfaces.nsIPrefService);
var prefs = prefservice.getBranch("");
if(prefs.getCharPref(MPLAYER_PREF) != "mplayer") {
- prefs.setCharPref(MPLAYER_PREF, "/usr/bin/mplayer");
+ prefs.setCharPref(MPLAYER_PREF, "mplayer");
}
if(prefs.getCharPref(TOTEM_PREF) != "totem") {
- prefs.setCharPref(TOTEM_PREF, "/usr/bin/totem");
+ prefs.setCharPref(TOTEM_PREF, "totem");
}
/*
if(prefs.getCharPref(LOCALE_CHARSET) != default_locale_charset) {
@@ -143,16 +143,16 @@
path = prefs.getCharPref(MPLAYER_PREF);
}
if(path == "")
- path = "/usr/bin/mplayer"
+ path = "mplayer"
} else if (player = "totem") {
URL = fromUnicode(URL, getCharset("locale"));
if (prefs.getPrefType(TOTEM_PREF) == prefs.PREF_STRING){
path = prefs.getCharPref(TOTEM_PREF);
} else {
- path = "/usr/bin/totem";
+ path = "totem";
}
if(path == "")
- path = "/usr/bin/totem"
+ path = "totem"
} else {
alert("Wrong call to comicLaunchPlayer");
return ;
@@ -161,13 +161,41 @@
// get the nsIFile object of mplayer
var targetFile = Components.classes['@mozilla.org/file/local;1'].
createInstance(Components.interfaces.nsILocalFile);
- targetFile.initWithPath(path);
- if (! targetFile.exists())
+
+ var env = Components.classes["@mozilla.org/process/environment;1"].
+ getService(Components.interfaces.nsIEnvironment);
+ var env_path = "";
+ var found = false;
+ if (path && (path[0] == '/')){
+ targetFile.initWithPath(path);
+ found = targetFile.exists();
+ } else if (path)
+ path = "/" + path;
+ else {
+ path = "/mplayer";
+ }
+ if (! found){
+ if (env.exists("PATH"))
+ env_path = env.get("PATH");
+ paths = env_path.split(":");
+ var fullpath = "";
+ for (var i=0;i<paths.length;i++){
+ var fullpath = paths[i] + path;
+ try {
+ targetFile.initWithPath(fullpath);
+ found = targetFile.exists();
+ } catch (e) {
+ continue;
+ }
+ if(found)
+ break;
+ }
+ }
+ if (! found)
{
- alert(MsgNoMPlayer);
- return (false);
+ alert(MsgNoMPlayer);
+ return (false);
}
-
// start the process
var process = Components.classes['@mozilla.org/process/util;1'].getService(Components.interfaces.nsIProcess);
process.init(targetFile);
@@ -177,77 +205,77 @@
}
function getPrefString(str, defaultString) {
- var prefServ = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService);
- var prefs = prefServ.getBranch("");
- if (prefs.getPrefType(str) == prefs.PREF_STRING &&
- prefs.getCharPref(str) != "") {
- return prefs.getCharPref(str);
- } else {
- return defaultString;
- }
+ var prefServ = Components.classes["@mozilla.org/preferences-service;1"].
+ getService(Components.interfaces.nsIPrefService);
+ var prefs = prefServ.getBranch("");
+ if (prefs.getPrefType(str) == prefs.PREF_STRING &&
+ prefs.getCharPref(str) != "") {
+ return prefs.getCharPref(str);
+ } else {
+ return defaultString;
+ }
}
function getCharset(proc) {
- switch(proc) {
- case "locale":
- var prefServ = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService);
- var prefs = prefServ.getBranch("");
- var encoding = default_locale_charset;
- if (prefs.getPrefType(LOCALE_CHARSET) == prefs.PREF_STRING &&
- prefs.getCharPref(LOCALE_CHARSET) != "") {
- encoding = prefs.getCharPref(LOCALE_CHARSET);
- }else{
- var lang = "";
- var env = Components.classes["@mozilla.org/process/environment;1"].
- getService(Components.interfaces.nsIEnvironment);
- if(env.exists("LC_CTYPE"))
- lang = env.get("LC_CTYPE");
- else if(env.exists("LANG"))
- lang = env.get("LANG");
-
- var al = lang.split(".");
- if(al != null){
- if(al[1] == "" && al[0] == "zh_CN"){
- alert("Please set environment variable LANG with an encoding explicitly, now I assume it's GB2312");
- encoding = "GB2312";
- }else if(al[1] == "" && al[0] != "zh_CN"){
- alert("Please set environment variable LANG with an encoding explicitly, now I assume it's UTF-8");
- encoding = "UTF-8";
- }else if(al[1] != undefined){
- encoding = al[1];
+ switch(proc) {
+ case "locale":
+ var prefServ = Components.classes["@mozilla.org/preferences-service;1"].
+ getService(Components.interfaces.nsIPrefService);
+ var prefs = prefServ.getBranch("");
+ var encoding = default_locale_charset;
+ if (prefs.getPrefType(LOCALE_CHARSET) == prefs.PREF_STRING &&
+ prefs.getCharPref(LOCALE_CHARSET) != "") {
+ encoding = prefs.getCharPref(LOCALE_CHARSET);
+ }else{
+ var lang = "";
+ var env = Components.classes["@mozilla.org/process/environment;1"].
+ getService(Components.interfaces.nsIEnvironment);
+ if(env.exists("LC_CTYPE"))
+ lang = env.get("LC_CTYPE");
+ else if(env.exists("LANG"))
+ lang = env.get("LANG");
+
+ var al = lang.split(".");
+ if(al != null){
+ if(al[1] == "" && al[0] == "zh_CN"){
+ alert("Please set environment variable LANG with an encoding explicitly, now I assume it's GB2312");
+ encoding = "GB2312";
+ }else if(al[1] == "" && al[0] != "zh_CN"){
+ alert("Please set environment variable LANG with an encoding explicitly, now I assume it's UTF-8");
+ encoding = "UTF-8";
+ }else if(al[1] != undefined){
+ encoding = al[1];
+ }
}
+ alert(encoding);
+ prefs.setCharPref(LOCALE_CHARSET, encoding);
}
- alert(encoding);
- prefs.setCharPref(LOCALE_CHARSET, encoding);
+ return encoding;
+ case "vod":
+ return getPrefString(VOD_CHARSET, default_vod_charset);
+ default:
+ alert("Wrong call to getCharset");
}
- return encoding;
- case "vod":
- return getPrefString(VOD_CHARSET, default_vod_charset);
- default:
- alert("Wrong call to getCharset");
- }
}
function fromUnicode(txt, charset){
- var scriptableUnicodeConverter =
- Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].getService();
- var nsIScriptableUnicodeConverter = scriptableUnicodeConverter.QueryInterface(
- Components.interfaces.nsIScriptableUnicodeConverter);
- nsIScriptableUnicodeConverter.charset = charset;
- var ret = nsIScriptableUnicodeConverter.ConvertFromUnicode(txt);
+ var scriptableUnicodeConverter =
+ Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].getService();
+ var nsIScriptableUnicodeConverter = scriptableUnicodeConverter.QueryInterface(
+ Components.interfaces.nsIScriptableUnicodeConverter);
+ nsIScriptableUnicodeConverter.charset = charset;
+ var ret = nsIScriptableUnicodeConverter.ConvertFromUnicode(txt);
return ret + nsIScriptableUnicodeConverter.Finish();
}
function toUnicode(txt, charset){
- var scriptableUnicodeConverter =
- Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].getService();
- var nsIScriptableUnicodeConverter=scriptableUnicodeConverter.QueryInterface(
- Components.interfaces.nsIScriptableUnicodeConverter);
- nsIScriptableUnicodeConverter.charset = charset;
- return nsIScriptableUnicodeConverter.ConvertToUnicode(txt);
+ var scriptableUnicodeConverter =
+ Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].getService();
+ var nsIScriptableUnicodeConverter=scriptableUnicodeConverter.QueryInterface(
+ Components.interfaces.nsIScriptableUnicodeConverter);
+ nsIScriptableUnicodeConverter.charset = charset;
+ return nsIScriptableUnicodeConverter.ConvertToUnicode(txt);
}
window.addEventListener("load", comicPlayerInit, false);
Modified: comicview/trunk/chrome/content/comicview/options.xul
===================================================================
--- comicview/trunk/chrome/content/comicview/options.xul 2008-04-26 06:48:37 UTC (rev 437)
+++ comicview/trunk/chrome/content/comicview/options.xul 2008-04-27 12:18:08 UTC (rev 438)
@@ -5,11 +5,11 @@
<script type="application/x-javascript" src="chrome://comicview/content/options.js"/>
<vbox>
<hbox>
- <label control="mplayerloc" value="Location of mplayer" size="50"/>
+ <label control="mplayerloc" value="mplayer alternative:" size="50"/>
<textbox id="mplayerloc" prefstring="comicview.mplayer" size="50"/>
</hbox>
<hbox>
- <label control="totemloc" value="Location of totem" size="50"/>
+ <label control="totemloc" value="totem alternative:" size="50"/>
<textbox id="totemloc" prefstring="comicview.totem" size="50"/>
</hbox>
<!--
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-04-26 06:48:48
|
Revision: 437
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=437&view=rev
Author: iacat
Date: 2008-04-25 23:48:37 -0700 (Fri, 25 Apr 2008)
Log Message:
-----------
fix ff3 getDefaultCharPref not a function error
Modified Paths:
--------------
comicview/trunk/chrome/content/comicview/comicview.js
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2008-04-18 01:37:23 UTC (rev 436)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2008-04-26 06:48:37 UTC (rev 437)
@@ -17,18 +17,20 @@
var prefservice = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefService);
var prefs = prefservice.getBranch("");
- if(prefs.getDefaultCharPref(MPLAYER_PREF) != "mplayer") {
- prefs.setDefaultCharPref(MPLAYER_PREF, "mplayer");
+ if(prefs.getCharPref(MPLAYER_PREF) != "mplayer") {
+ prefs.setCharPref(MPLAYER_PREF, "/usr/bin/mplayer");
}
- if(prefs.getDefaultCharPref(TOTEM_PREF) != "totem") {
- prefs.setDefaultCharPref(TOTEM_PREF, "totem");
+ if(prefs.getCharPref(TOTEM_PREF) != "totem") {
+ prefs.setCharPref(TOTEM_PREF, "/usr/bin/totem");
}
- if(prefs.getDefaultCharPref(LOCALE_CHARSET) != default_locale_charset) {
- prefs.setDefaultCharPref(LOCALE_CHARSET, default_locale_charset);
+ /*
+ if(prefs.getCharPref(LOCALE_CHARSET) != default_locale_charset) {
+ prefs.setCharPref(LOCALE_CHARSET, default_locale_charset);
}
- if(prefs.getDefaultCharPref(VOD_SERVER_CHARSET) != default_vod_charset) {
- prefs.setDefaultCharPref(VOD_SERVER_CHARSET, default_vod_charset);
+ if(prefs.getCharPref(VOD_SERVER_CHARSET) != default_vod_charset) {
+ prefs.setCharPref(VOD_SERVER_CHARSET, default_vod_charset);
}
+ */
}
function comicPlayereHide() {
@@ -141,16 +143,16 @@
path = prefs.getCharPref(MPLAYER_PREF);
}
if(path == "")
- path = "mplayer"
+ path = "/usr/bin/mplayer"
} else if (player = "totem") {
URL = fromUnicode(URL, getCharset("locale"));
if (prefs.getPrefType(TOTEM_PREF) == prefs.PREF_STRING){
path = prefs.getCharPref(TOTEM_PREF);
} else {
- path = "totem";
+ path = "/usr/bin/totem";
}
if(path == "")
- path = "totem"
+ path = "/usr/bin/totem"
} else {
alert("Wrong call to comicLaunchPlayer");
return ;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-04-18 01:37:25
|
Revision: 436
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=436&view=rev
Author: pupilzeng
Date: 2008-04-17 18:37:23 -0700 (Thu, 17 Apr 2008)
Log Message:
-----------
* configure.in: fix the typo in the package version, remove the
redundantly included version.h in version.h.
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/configure.in
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2008-03-18 18:34:31 UTC (rev 435)
+++ truran-xine/trunk/ChangeLog 2008-04-18 01:37:23 UTC (rev 436)
@@ -1,3 +1,8 @@
+2008-04-17 Shixin Zeng <zen...@gm...>
+
+ * configure.in: fix the typo in the package version, remove the
+ redundantly included version.h in version.h.
+
2008-01-15 Shixin Zeng <zen...@gm...>
* debian/changelog: replaced with a template, non-specific to distribution
Modified: truran-xine/trunk/configure.in
===================================================================
--- truran-xine/trunk/configure.in 2008-03-18 18:34:31 UTC (rev 435)
+++ truran-xine/trunk/configure.in 2008-04-18 01:37:23 UTC (rev 436)
@@ -17,7 +17,7 @@
m4_define([vod_version_macro_m], [0])
AC_INIT([truran-xine],
- truran_version_major_m.truran_version_minor_m.truran_version_macro_m,
+ truran_version_major.truran_version_minor.truran_version_macro,
[shi...@sj...])
AC_CONFIG_SRCDIR([src/lib/vod.c])
@@ -38,7 +38,6 @@
#include "config.h"
#endif
-#include "version.h"
#include "misc.h"
#include "platforms.h"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-03-18 18:35:07
|
Revision: 435
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=435&view=rev
Author: pupilzeng
Date: 2008-03-18 11:34:31 -0700 (Tue, 18 Mar 2008)
Log Message:
-----------
fix the mispelling of my name
Modified Paths:
--------------
truran-xine/branches/fuse/trunk/AUTHORS
Modified: truran-xine/branches/fuse/trunk/AUTHORS
===================================================================
--- truran-xine/branches/fuse/trunk/AUTHORS 2008-03-18 07:13:20 UTC (rev 434)
+++ truran-xine/branches/fuse/trunk/AUTHORS 2008-03-18 18:34:31 UTC (rev 435)
@@ -1,2 +1,2 @@
-Shixin Zheng(shi...@sj...)
+Shixin Zeng(shi...@sj...)
Wang Kai (fe...@gm...)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-03-18 07:13:27
|
Revision: 434
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=434&view=rev
Author: iacat
Date: 2008-03-18 00:13:20 -0700 (Tue, 18 Mar 2008)
Log Message:
-----------
mirror a fuse plugin for truran
Added Paths:
-----------
truran-xine/branches/fuse/trunk/
truran-xine/branches/fuse/trunk/AUTHORS
truran-xine/branches/fuse/trunk/INSTALL
truran-xine/branches/fuse/trunk/README
truran-xine/branches/fuse/trunk/doc/
truran-xine/branches/fuse/trunk/doc/libvod
truran-xine/branches/fuse/trunk/doc/protocol
truran-xine/branches/fuse/trunk/src/
truran-xine/branches/fuse/trunk/src/CMakeLists.txt
truran-xine/branches/fuse/trunk/src/cmake/
truran-xine/branches/fuse/trunk/src/cmake/FindFUSE.cmake
truran-xine/branches/fuse/trunk/src/config.h.cmake
truran-xine/branches/fuse/trunk/src/fuse/
truran-xine/branches/fuse/trunk/src/fuse/CMakeLists.txt
truran-xine/branches/fuse/trunk/src/fuse/vodfs.c
truran-xine/branches/fuse/trunk/src/fuse/vodfs.h
truran-xine/branches/fuse/trunk/src/include/
truran-xine/branches/fuse/trunk/src/include/misc.h
truran-xine/branches/fuse/trunk/src/include/platforms.h
truran-xine/branches/fuse/trunk/src/lib/
truran-xine/branches/fuse/trunk/src/lib/CMakeLists.txt
truran-xine/branches/fuse/trunk/src/lib/cache.c
truran-xine/branches/fuse/trunk/src/lib/cache.h
truran-xine/branches/fuse/trunk/src/lib/vod.c
truran-xine/branches/fuse/trunk/src/lib/vod.h
truran-xine/branches/fuse/trunk/src/lib/vod_io_default_functions.c
truran-xine/branches/fuse/trunk/src/lib/vod_io_default_functions.h
truran-xine/branches/fuse/trunk/src/test/
truran-xine/branches/fuse/trunk/src/test/CMakeLists.txt
truran-xine/branches/fuse/trunk/src/test/cache_test.c
truran-xine/branches/fuse/trunk/src/test/check.c
truran-xine/branches/fuse/trunk/src/test/invalid_urls.c
truran-xine/branches/fuse/trunk/src/test/uptime_test.c
truran-xine/branches/fuse/trunk/src/test/url_test.c
truran-xine/branches/fuse/trunk/src/test/valid_urls.c
truran-xine/branches/fuse/trunk/src/test/vod_handle.c
truran-xine/branches/fuse/trunk/src/test/vod_test.c
truran-xine/branches/fuse/trunk/src/test/vod_url.dat
truran-xine/branches/fuse/trunk/src/test/vodfs_test.c
truran-xine/branches/fuse/trunk/src/test/vodfs_test1.c
truran-xine/branches/fuse/trunk/src/utils/
truran-xine/branches/fuse/trunk/src/utils/CMakeLists.txt
truran-xine/branches/fuse/trunk/src/utils/uptime.c
truran-xine/branches/fuse/trunk/src/utils/uptime.h
truran-xine/branches/fuse/trunk/src/utils/url_parse.c
truran-xine/branches/fuse/trunk/src/utils/url_parse.h
truran-xine/branches/fuse/trunk/src/utils/vodutils.c
truran-xine/branches/fuse/trunk/src/utils/vodutils.h
truran-xine/branches/fuse/trunk/src/version.h.cmake
truran-xine/branches/fuse/trunk/src/vod_handle
Added: truran-xine/branches/fuse/trunk/AUTHORS
===================================================================
--- truran-xine/branches/fuse/trunk/AUTHORS (rev 0)
+++ truran-xine/branches/fuse/trunk/AUTHORS 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,2 @@
+Shixin Zheng(shi...@sj...)
+Wang Kai (fe...@gm...)
Added: truran-xine/branches/fuse/trunk/INSTALL
===================================================================
--- truran-xine/branches/fuse/trunk/INSTALL (rev 0)
+++ truran-xine/branches/fuse/trunk/INSTALL 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,12 @@
+DEPENDS:
+ fuse >= 2.6
+ pthread
+BUILD:
+ cd src
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/bin .
+ make
+ make install (need root priviledge)
+INSTALL:
+ set mplayer location to /usr/bin/vod_handle in firefox plugin comicview
+ vod_handle is a bash script, you can modify it to switch player
+
Added: truran-xine/branches/fuse/trunk/README
===================================================================
--- truran-xine/branches/fuse/trunk/README (rev 0)
+++ truran-xine/branches/fuse/trunk/README 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,5 @@
+It's a frontend of libvod
+implements a fake filesystem vodfs.
+Finally all players are supported.
+
+Write a frontend for each player is hard to maintain, and need to recompile once the player upgrade.
Added: truran-xine/branches/fuse/trunk/doc/libvod
===================================================================
--- truran-xine/branches/fuse/trunk/doc/libvod (rev 0)
+++ truran-xine/branches/fuse/trunk/doc/libvod 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,37 @@
+libvod is a C library of the Truran protocol for multimedia stream.
+
+The protocol was hacked by pigworlds initially. and this library is based on his patch for mplayer and his guidelines.
+
+This file is for version 0.2.0, for the protocol was splitted out of libtruran-xine since the version 0.2.0
+The library is consist of 3 components:
+1. A networking component
+2. A protocol operation component
+3. A frontend component for various uses(currently only a plugin for xine-lib was implemented).
+
+1. The networking component.
+As libtruran was designed to be as much flexible as possible, the networking component is splitted out and works as callbacks to serve component 2 (the protocol component). It must implement 4 functions:
+typedef ssize_t (*vod_connect_func_t)(const char *host, int port, void *other);
+Connect to host:port, return 0 when success and -1 when failed.
+The parameter @other was passed in by vod_open();
+For a nonblock socket, this function would return immediately. For a block socket, it won't return until connects or error occures.
+
+typedef vod_io_status_t (*vod_connect_finish_t)(int fd, int timeout, void *other);
+Try to determine if the connection succeeded.
+For a block socket, this function may do nothing.
+
+typedef ssize_t (*vod_readall_func_t)(int fd, void *buff, size_t len, void *other);
+Try to read @len bytes into buff from fd.
+Return the length (in bytes) of the data read or -1 when error occurred.
+If an integer less than @len but -1 returned, it indicates EOF reached or the peer closed the connection. You needn't call it again to read the rest of the data.
+
+typedef ssize_t (*vod_writeall_func_t)(int fd, void *buff, size_t len, void *other);
+Similar as vod_readall_func_t above.
+
+All of these functions have default implementations, which may be considerred as examples.
+
+2. The protocol component.
+See comments in the header/source files.
+
+3. The frontend component.
+See the example in frontend/xine-lib or the test program in test/vod_test.c
+
Added: truran-xine/branches/fuse/trunk/doc/protocol
===================================================================
--- truran-xine/branches/fuse/trunk/doc/protocol (rev 0)
+++ truran-xine/branches/fuse/trunk/doc/protocol 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,93 @@
+TruRan protocol
+1. client send request:
+2. server reply:
+2.1 the first packet is almost useless: end with "\r\n\r\n"
+2.2 the second is almost useless too, but its size is significant (512 bytes)
+3 media stream follows the second packet.
+
+ 1. requst(a)
++-------------+ <-------------------- +------------+
+| | 2. reply(A) | |
+| | ----------------------> | |
+| | 3. reply(B) | |
+| server | ----------------------> | client |
+| | 4. data | |
+| | ----------------------> | |
++-------------+ +------------+
+
+II the content of each packet.
+All binary representation of data are in little-endian form.
+All strings are encoded GB18030 encoding
+
+1) Request a
+It consist of several seccesive fields, each field ends with "\r\n".
+Field list with the tailing "\r\n" omited in order(in the following statements, $(x) means a variable named x, and it should be subsititued by its value):
+
+1. "POST /XMMS/MPLAYER$(TIME).xms HTTP/1.0" TIME:
+ type:string;
+ value: the current day and time;
+ format: DDHHMMSS(D for Day, H for Hour,
+ M for minute, S for second)
+
+2. "Host: $(HOSTNAME)" HOSTNAME:
+ type: string
+ value: the name of the computer.
+3. "Accept: */*"
+4. "User-Agent: XMPLAYER"
+5. "UGT:XMPLAYER"
+6. "UIP:$(IP)" IP: ipv4 address of the computer
+ type: 4-byte integer
+ value: ipv4 address in binary representation.
+
+7. "USN:%$(SN)" SN: a serial number to identify the connection
+ type: 4-byte integer
+ value: For initial connection, it's computer's
+ uptime() in microseconds. For seeking, it was
+ taken from the initial connection.
+
+8. "PRI:$(PRIORITY)\r\n" PRIORITY:
+ type: 4-byte integer
+ value: 0 always
+ myprintf("UPR:%d\r\n", 0);
+ myprintf("SPL:%lu\r\n", (sizeof(start) > 4)? (start % ((off_t)1<<32)) : start ); /* stream position Low 32-bits */
+ myprintf("SPH:%lu\r\n", (sizeof(start) > 4)? (start>>32) : 0); /* stream position High 32-bits */
+ myprintf("URN:%s\r\n", (this->purl.user == NULL)? "" : this->purl.user); /* user name */
+ myprintf("PWD:%s\r\n", (this->purl.password == NULL)? "" : this->purl.password); /* password */
+ myprintf("FPT:%d\r\n", (start == 0)? 1 : 0); /* file position tag: 1, start; 0, middle */
+ myprintf("FIL:%s\r\n", this->purl.filepath); /* something like \\202.120.2.190\vode$\rm\港台\港台3\南少林三十六房\12.rm */
+ myprintf("ULG:%s\r\n", "CN");
+ if(start == 0){
+ myprintf("STT:%s\r\n", "YYYY/MM/DD HH:MM:SS"); /* For the first time, this is unknown */
+ CHECK_FREE(this->stream_datetime);
+ }else{
+ myprintf("STT:%s\r\n", this->stream_datetime); /* stream time: 2002/05/04 14:51:37, when seeking, this was already known */
+ }
+
+ myprintf("HST:%s\r\n", hostname);/* hostname: SHANGHAI-SHIXIN */
+ myprintf("PNM:%s\r\n", get_comment(this->purl.filepath)); /* something like 12.rm */
+ myprintf("PID:%d\r\n", 0);
+ myprintf("IDX:%d\r\n", 0);
+ myprintf("%s\r\n", "");
+
+2) Reply A
+ The reply A, which ends with "\r\n\r\n", could be ignored.
+3) Reply B
+ Reply B, whose length is exact 512 bytes, should be parsed, it contains some useful information.
+The fields of the packet are:
+Offsets name type value remarks
+0 - 3: magic string "XMMS"
+4 - 7: UNKOWN UNKOWN 00 02 00 00
+8 - 11: errno integer 0 for sucess, 0x0c for failure
+12 - 15: UNKOWN UNKOWN 00 00 00 00
+16 - 23: filesize 8-byte integer the filesize
+24 - 31: stream_positoin 8-byte integer the position of current stream
+32 - 35: UNKOWN UNKOWN 00 00 01 00
+36 - 39: UNKOWN UNKOWN 00 00 00 00
+40 - 43: UNKOWN UNKOWN 64 00 00 00 for success, 00 00 00 00 for failure
+44 -143: error message string the reason why it failed
+144-403: filename string the name of the file to be played
+404-422: date_time string the file's time information
+423-511: UNKOWN UNKOWN
+
+4) stream data
+The data is read from the multimedia file without any change. So data received is identical to that read from local file.
Added: truran-xine/branches/fuse/trunk/src/CMakeLists.txt
===================================================================
--- truran-xine/branches/fuse/trunk/src/CMakeLists.txt (rev 0)
+++ truran-xine/branches/fuse/trunk/src/CMakeLists.txt 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,52 @@
+PROJECT(TRUVOD)
+
+SET(CMAKE_MODULE_PATH ${TRUVOD_SOURCE_DIR}/cmake)
+
+CONFIGURE_FILE(${TRUVOD_SOURCE_DIR}/version.h.cmake ${TRUVOD_BINARY_DIR}/include/version.h)
+CONFIGURE_FILE(${TRUVOD_SOURCE_DIR}/config.h.cmake ${TRUVOD_BINARY_DIR}/include/config.h)
+
+ADD_DEFINITIONS(-D_GNU_SOURCE -DHAVE_CONFIG_H)
+
+SUBDIRS(utils lib fuse)
+IF(_TEST)
+ ADD_SUBDIRECTORY(test)
+ENDIF(_TEST)
+OPTION(RECONNECT "Reconnect automatically when the server is busy" 0)
+INCLUDE (CheckIncludeFiles)
+CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
+CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
+CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILES("sys/times.h" HAVE_SYS_TIMES_H)
+CHECK_INCLUDE_FILES("sys/socket.h" HAVE_SYS_SOCKET_H)
+CHECK_INCLUDE_FILES("netinet/in.h" HAVE_NETINET_IN_H)
+CHECK_INCLUDE_FILES("arpa/in.h" HAVE_ARPA_IN_H)
+CHECK_INCLUDE_FILES("netdb.h" HAVE_NETDB_H)
+CHECK_INCLUDE_FILES("fcntl.h" HAVE_FCNTL_H)
+CHECK_INCLUDE_FILES("stdint.h" HAVE_STDINT_H)
+CHECK_INCLUDE_FILES("stddef.h" HAVE_STDDEF_H)
+INCLUDE(CheckFunctionExists)
+CHECK_FUNCTION_EXISTS(localtime_r HAVE_LOCALETIME_R)
+INCLUDE(CheckTypeSize)
+CHECK_TYPE_SIZE(int SIZEOF_INT)
+CHECK_TYPE_SIZE(short SIZEOF_SHORT)
+CHECK_TYPE_SIZE(long SIZEOF_LONG)
+CHECK_TYPE_SIZE(off_t SIZEOF_OFF_T)
+CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T)
+CHECK_TYPE_SIZE(ssize_t SIZEOF_SSIZE_T)
+CHECK_TYPE_SIZE(uint32_t SIZEOF_UINT32_T)
+CHECK_TYPE_SIZE(int32_t SIZEOF_INT32_T)
+CHECK_TYPE_SIZE(socklen_t SIZEOF_SOCKLEN_T)
+
+INCLUDE(TestBigEndian)
+TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
+
+INCLUDE(TestCXXAcceptsFlag)
+CHECK_CXX_ACCEPTS_FLAG(-fvisibility=hidden HAVE_GCCVISIBILITYPATH)
+
+FIND_PACKAGE(FUSE 2.6 REQUIRED)
+
+IF(WIN32)
+ ADD_DEFINITIONS(-D_WIN32)
+ENDIF(WIN32)
+
+INSTALL(PROGRAMS vod_handle DESTINATION bin)
Added: truran-xine/branches/fuse/trunk/src/cmake/FindFUSE.cmake
===================================================================
--- truran-xine/branches/fuse/trunk/src/cmake/FindFUSE.cmake (rev 0)
+++ truran-xine/branches/fuse/trunk/src/cmake/FindFUSE.cmake 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,59 @@
+# - Find FUSE http://fuse.sourceforge.net/
+# This module looks for FUSE support on linux platform
+# it will define the following values
+# MPI_INCLUDE_PATH = where mpi.h can be found
+# MPI_LIBRARY = the library to link in (mpi mpich etc)
+
+IF (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ MESSAGE(STATUS "FUSE not available on non-Linux platform")
+ SET(FUSE_FOUND "NO")
+ELSE (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ MESSAGE(STATUS "Looking for FUSE headers ...")
+ FIND_PATH(FUSE_INCLUDE_DIR
+ fuse.h
+ /usr/include /usr/local/include
+ DOC "The FUSE header")
+ IF(FUSE_INCLUDE_DIR)
+ MESSAGE(STATUS "Looking for FUSE headers - found : ${FUSE_INCLUDE_DIR}")
+ ELSE(FUSE_INCLUDE_DIR)
+ MESSAGE(STATUS "Looking for FUSE headers - NOT found")
+ ENDIF(FUSE_INCLUDE_DIR)
+
+ MESSAGE(STATUS "Looking for XATTR headers ...")
+ FIND_PATH(XATTR_INCLUDE_DIR
+ xattr.h
+ /usr/include/attr /usr/local/include/attr
+ DOC "The xattr header")
+ IF(XATTR_INCLUDE_DIR)
+ MESSAGE(STATUS "Looking for XATTR headers - found : ${XATTR_INCLUDE_DIR}")
+ ELSE(XATTR_INCLUDE_DIR)
+ MESSAGE(STATUS "Looking for XATTR headers - NOT found")
+ ENDIF(XATTR_INCLUDE_DIR)
+
+ MESSAGE(STATUS "Looking for FUSE library ...")
+ FIND_LIBRARY(FUSE_LIBRARY
+ NAMES fuse
+ PATHS /usr/lib /usr/local/lib
+ DOC "The FUSE library")
+
+ IF(FUSE_LIBRARY)
+ MESSAGE(STATUS "Looking for FUSE library - found : ${FUSE_LIBRARY}")
+ ELSE(FUSE_LIBRARY)
+ MESSAGE(STATUS "Looking for FUSE library - NOT found")
+ ENDIF(FUSE_LIBRARY)
+
+ IF(FUSE_INCLUDE_DIR AND XATTR_INCLUDE_DIR AND FUSE_LIBRARY)
+ SET(FUSE_FOUND "YES")
+ SET(FUSE_DEVEL_PACKAGE fuse-devel)
+ ELSE(FUSE_INCLUDE_DIR AND XATTR_INCLUDE_DIR AND FUSE_LIBRARY)
+ SET(FUSE_FOUND "NO")
+ SET(FUSE_DEVEL_PACKAGE "")
+ ENDIF(FUSE_INCLUDE_DIR AND XATTR_INCLUDE_DIR AND FUSE_LIBRARY)
+ENDIF (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+
+MARK_AS_ADVANCED(
+ FUSE_INCLUDE_DIR
+ XATTR_INCLUDE_DIR
+ FUSE_LIBRARY
+ )
+
Added: truran-xine/branches/fuse/trunk/src/config.h.cmake
===================================================================
--- truran-xine/branches/fuse/trunk/src/config.h.cmake (rev 0)
+++ truran-xine/branches/fuse/trunk/src/config.h.cmake 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,53 @@
+/* define to 1 if you have "unistd.h" on your system */
+#cmakedefine HAVE_UNISTD_H 1
+
+/* define to 1 if you have "strings.h" on your system */
+#cmakedefine HAVE_STRINGS_H 1
+
+/* define to 1 if you have "fcntl.h" on your system */
+#cmakedefine HAVE_FCNTL_H 1
+
+/* define to 1 if you have "sys/socket.h" on your system */
+#cmakedefine HAVE_SYS_SOCKET_H 1
+
+/* define to 1 if you have "arpa/in.h" on your system */
+#cmakedefine HAVE_ARPA_IN_H 1
+
+/* define to 1 if you have "netinet/in.h" on your system */
+#cmakedefine HAVE_NETINET_IN_H 1
+
+/* define to 1 if you have "netdb.h" on your system */
+#cmakedefine HAVE_NETDB_H 1
+
+/* define to 1 if you have "sys/types.h" on your system */
+#cmakedefine HAVE_SYS_TYPES_H 1
+
+/* define to 1 if you have "sys/times.h" on your system */
+#cmakedefine HAVE_SYS_TIMES_H 1
+
+/* define to 1 if you have "stdint.h" on your system */
+#cmakedefine HAVE_STDINT_H 1
+
+/* define to 1 if you have "stddef.h" on your system */
+#cmakedefine HAVE_STDDEF_H 1
+
+/* define to 1 if you have the function "localtime_r" on your system */
+#cmakedefine HAVE_LOCALTIME_R 1
+
+/* define to 1 if your gcc accepts -fvisibility=hidden flag */
+#cmakedefine HAVE_GCCVISIBILITYPATH 1
+
+/* define to 1 if your CPU is big-endian */
+#cmakedefine WORDS_BIGENDIAN 1
+
+#cmakedefine HAVE_SIZEOF_OFF_T @SIZEOF_OFF_T@
+#cmakedefine HAVE_SIZEOF_INT @SIZEOF_INT@
+#cmakedefine HAVE_SIZEOF_SHORT @SIZEOF_SHORT@
+#cmakedefine HAVE_SIZEOF_LONG @SIZEOF_LONG@
+#cmakedefine HAVE_SIZEOF_SIZE_T @SIZEOF_SIZE_T@
+#cmakedefine HAVE_SIZEOF_SSIZE_T @SIZEOF_SSIZE_T@
+#cmakedefine HAVE_SIZEOF_SOCKLEN_T @SIZEOF_SOCKLEN_T@
+#cmakedefine HAVE_SIZEOF_UINT32_T @SIZEOF_UINT32_T@
+#cmakedefine HAVE_SIZEOF_INT32_T @SIZEOF_INT32_T@
+
+#define PACKAGE_BUGREPORT @package_bugreport@
Added: truran-xine/branches/fuse/trunk/src/fuse/CMakeLists.txt
===================================================================
--- truran-xine/branches/fuse/trunk/src/fuse/CMakeLists.txt (rev 0)
+++ truran-xine/branches/fuse/trunk/src/fuse/CMakeLists.txt 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,7 @@
+INCLUDE_DIRECTORIES(${TRUVOD_SOURCE_DIR}/include ${TRUVOD_SOURCE_DIR} ${TRUVOD_SOURCE_DIR}/lib ${TRUVOD_SOURCE_DIR}/utils ${TRUVOD_BINARY_DIR}/include)
+LINK_DIRECTORIES(${TRUVOD_BINARY_DIR}/lib ${TRUVOD_BINARY_DIR}/utils)
+ADD_DEFINITIONS(-D_REENTRANT -DFUSE_USE_VERSION=26 -D_FILE_OFFSET_BITS=64)
+ADD_EXECUTABLE(vodfs vodfs.c)
+TARGET_LINK_LIBRARIES(vodfs pthread vod vodutils fuse)
+
+INSTALL(TARGETS vodfs DESTINATION bin)
Added: truran-xine/branches/fuse/trunk/src/fuse/vodfs.c
===================================================================
--- truran-xine/branches/fuse/trunk/src/fuse/vodfs.c (rev 0)
+++ truran-xine/branches/fuse/trunk/src/fuse/vodfs.c 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,673 @@
+/*
+ * VODFS: import a file from truran vod server to local file system
+ * the main use is, truran protocol support for all media player
+ *
+ * depends on:
+ * FUSE: Filesystem in Userspace
+ * Copyright (C) 2008 iacat <fe...@gm...>
+ *
+ * This program can be distributed under the terms of the GNU GPL.
+ *
+ */
+/*
+ * This vodfs tries to achieve that the mount-point-folder behaves as before.
+ * But how can you access the original folder after the mount?
+ * Answer comes from FuseCompress:
+ * Open the folder before the mount,
+ * keep it open all the time,
+ * make a chdir to it
+ * and always use a relative path.
+ * It suffices not to chdir in main() and it's unnecessary to
+ * do it in every function. vodfs_init is the right place.
+ */
+#include <syslog.h>
+#include <fuse.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <strings.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/dir.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <time.h>
+#include <signal.h>
+#include <pthread.h>
+#include <mcheck.h>
+#include "vodfs.h"
+#include "vod.h"
+#include "url_parse.h"
+
+#define VERSION "0.0.1"
+
+#define INPUT_FILENAME "toplay"
+
+static char* argv0;
+static char* argv1;
+static playlist_t playlist;
+static buffer_t inbuf;
+static int targetFd;
+static pthread_mutex_t vod_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_rwlock_t list_lock = PTHREAD_RWLOCK_INITIALIZER;
+
+static int name_free(const int idx) {
+ int i;
+ char *c1, *c2;
+
+ if (idx < 0) return -1;
+ if (idx < playlist.ct) {
+ c1 = playlist.uri[idx];
+ c2 = playlist.playname[idx];
+ for (i = idx; i < playlist.ct - 1; i++) {
+ playlist.uri[i] = playlist.uri[i+1];
+ playlist.playname[i] = playlist.playname[i+1];
+ playlist.vodlist[i] = playlist.vodlist[i+1];
+ }
+ playlist.ct --;
+ playlist.playname[playlist.ct] = NULL;
+ playlist.uri[playlist.ct] = NULL;
+ playlist.vodlist[playlist.ct] = NULL;
+ free(c1);
+ free(c2);
+ return 0;
+ } else {
+ return -1;
+ }
+}
+
+static int name_index(const char *name) {
+ int i;
+
+ for(i=0; i<playlist.ct; i++) {
+ if(strcmp(playlist.playname[i], name) == 0) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+static int parse_input(buffer_t *in, playlist_t *play) {
+ int i;
+ char *c1, *c2, *str1, *str2;
+ url_t tmpurl;
+
+ if(in && play) {
+ play->ct = 0;
+ c2 = in->buf;
+ for (i=0; i<MAXPLAY; i++) {
+ c1 = index(c2, '\n');
+ if(c1 && (c1 - in->buf < in->len)) {
+ str1 = strndup(c2, c1-c2+1);
+ str1[c1-c2] = '\0';
+ if (url_parse(str1, &tmpurl) == 0) {
+ play->uri[i] = strdup(str1);
+ str2 = strdup(rindex(tmpurl.filepath, '.'));
+ play->playname[i] = malloc(MAXNAMELEN);
+ sprintf(play->playname[i], "%d%s", i, str2);
+ play->ct = i+1;
+ free(str2);
+ free(str1);
+ } else {
+ free(str1);
+ return -1;
+ }
+ c2 = c1 + 1;
+ if(c2 - in->buf >= MAXBUFSIZE) {
+ return -1;
+ }
+ if(c2 - in->buf >= in->len) {
+ return 0;
+ }
+ }
+ }
+ return -1; //playlist exceeds MAXPLAY
+ }
+ return -1;
+}
+
+static int vodfs_getattr(const char *path, struct stat *stbuf) {
+ int i;
+ vod_t* tmp;
+ size_t res = 0;
+
+ memset(stbuf, 0, sizeof(struct stat));
+ if (strcmp(path, "/") == 0) {
+ stbuf->st_mode = S_IFDIR | 0755; /* read, write and search by owner, read and write by all other */
+ stbuf->st_nlink = 2;
+ } else if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ stbuf->st_mode = S_IFREG | 0666; /* read and write for everybody */
+ stbuf->st_nlink = 1;
+ stbuf->st_size = inbuf.len;
+ } else if ( (i = name_index(path+1)) != -1 ) {
+ stbuf->st_mode = S_IFREG | 0444;
+ stbuf->st_nlink = 1;
+ pthread_rwlock_wrlock(&list_lock);
+
+ if (!playlist.vodlist[i]) {
+ pthread_mutex_lock(&vod_lock);
+ playlist.vodlist[i] = vod_open(playlist.uri[i], NULL, NULL, NULL, NULL, NULL, NULL);
+ pthread_mutex_unlock(&vod_lock);
+ }
+ if ( (!playlist.vodlist[i]) || (playlist.vodlist[i]->status == VOD_STATUS_ERROR) )
+ res = -ENOENT;
+ else
+ res = playlist.vodlist[i]->filesize;
+
+ /*
+ res = (playlist.vodlist[i] && (playlist.vodlist[i]->status == VOD_STATUS_OK) ) ? (playlist.vodlist[i]->filesize) : 0;
+ */
+ stbuf->st_size = res;
+ pthread_rwlock_unlock(&list_lock);
+ } else {
+ if (lstat(path+1, stbuf) == -1)
+ return -ENOENT;
+ }
+ return 0;
+}
+
+static int vodfs_access(const char *path, int mask) {
+ int res;
+
+ if (strcmp(path, "/") == 0) {
+ return 0;
+ } else if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ return ((mask & X_OK) == X_OK) ? -EACCES: 0;
+ } else if (name_index(path+1) != -1) {
+ return !( ((mask & W_OK) == W_OK) || ((mask & X_OK) == X_OK) );
+ } else {
+ res = access(path+1, mask);
+ if (res == -1)
+ return -errno;
+ }
+ return 0;
+}
+
+static int vodfs_readlink(const char *path, char *buf, size_t size) {
+ int res;
+
+ res = readlink(path+1, buf, size - 1);
+ if (res == -1)
+ return -errno;
+
+ buf[res] = '\0';
+ return 0;
+}
+
+static int vodfs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
+ off_t offset, struct fuse_file_info *fi) {
+ DIR *dp;
+ struct dirent *de;
+ int i;
+ (void) offset;
+ (void) fi;
+
+ if(strcmp(path, "/") != 0) {
+ dp = opendir(path + 1);
+ } else {
+ filler(buf, INPUT_FILENAME, NULL, 0);
+ pthread_rwlock_rdlock(&list_lock);
+ for(i=0; i<playlist.ct; i++)
+ filler(buf, playlist.playname[i], NULL, 0);
+ pthread_rwlock_unlock(&list_lock);
+ dp = opendir(".");
+ }
+ if (dp == NULL)
+ return -errno;
+
+ while ((de = readdir(dp)) != NULL) {
+ struct stat st;
+ memset(&st, 0, sizeof(st));
+ st.st_ino = de->d_ino;
+ st.st_mode = de->d_type << 12;
+ if (filler(buf, de->d_name, &st, 0))
+ break;
+ }
+
+ closedir(dp);
+
+ return 0;
+}
+
+static int vodfs_mknod(const char *path, mode_t mode, dev_t rdev) {
+ int res;
+
+ /* On Linux this could just be 'mknod(path, mode, rdev)' but this is more portable */
+ if (S_ISREG(mode)) {
+ res = open(path+1, O_CREAT | O_EXCL | O_WRONLY, mode);
+ if (res >= 0)
+ res = close(res);
+ } else if (S_ISFIFO(mode))
+ res = mkfifo(path, mode);
+ else
+ res = mknod(path, mode, rdev);
+ if (res == -1)
+ return -errno;
+ return 0;
+}
+
+static int vodfs_mkdir(const char *path, mode_t mode) {
+
+ if (mkdir(path+1, mode) == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_symlink(const char *from, const char *to) {
+
+ // This function is only called, if "to" happens to reside in mount-point-folder.
+ // "from" is always an ordinary path
+
+ if (symlink(from, to+1) == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_unlink(const char *path) {
+ int res;
+
+ res = unlink(path+1);
+ if (res == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_rmdir(const char *path) {
+ int res;
+
+ res = rmdir(path+1);
+ if (res == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_rename(const char *from, const char *to) {
+ // seems to be never called (cross-device link)
+ // replaced by copy and delete ?
+
+ if (rename(from, to+1) == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_link(const char *from, const char *to) {
+ int res;
+
+ res = link(from+1, to+1);
+ if (res == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_chmod(const char *path, mode_t mode) {
+
+ if (strcmp(path, INPUT_FILENAME) == 0) {
+ return -EACCES;
+ } else {
+ if (chmod(path+1, mode) == -1)
+ return -errno;
+ }
+ return 0;
+}
+
+static int vodfs_chown(const char *path, uid_t uid, gid_t gid) {
+
+ if (strcmp(path, INPUT_FILENAME) == 0) {
+ return -EACCES;
+ } else {
+ if (lchown(path+1, uid, gid) == -1)
+ return -errno;
+ }
+ return 0;
+}
+
+static int vodfs_truncate(const char *path, off_t size) {
+
+ if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ bzero(&inbuf, sizeof(buffer_t));
+ return 0;
+ } else {
+ if (truncate(path+1, size) == -1)
+ return -errno;
+ }
+ return 0;
+}
+
+static int vodfs_utime(const char *path, struct utimbuf *buf) {
+
+ if (strcmp(path, INPUT_FILENAME) == 0) {
+ return -EACCES;
+ } else {
+ if (utime(path+1, buf) == -1)
+ return -errno;
+ }
+ return 0;
+}
+
+static int vodfs_open(const char *path, struct fuse_file_info *fi) {
+ int i;
+ size_t res;
+
+ if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ return 0;
+ } else {
+ pthread_rwlock_wrlock(&list_lock);
+ if ( (i = name_index(path+1)) != -1) {
+ if (!playlist.vodlist[i] || (playlist.vodlist[i]->filesize == 0) ) {
+ pthread_mutex_lock(&vod_lock);
+ playlist.vodlist[i] = vod_open(playlist.uri[i], NULL, NULL, NULL, NULL, NULL, NULL);
+ pthread_mutex_unlock(&vod_lock);
+ } else if ( (!playlist.vodlist[i]) || (playlist.vodlist[i]->status == VOD_STATUS_ERROR) ) {
+ pthread_mutex_lock(&vod_lock);
+ if (playlist.vodlist[i])
+ vod_close(playlist.vodlist[i]);
+ pthread_mutex_unlock(&vod_lock);
+ playlist.vodlist[i] = NULL;
+ name_free(i);
+ res = -EIO;
+ } else
+ res = 0;
+ pthread_rwlock_unlock(&list_lock);
+ return res;
+ }
+ }
+ res = open(path+1, fi->flags);
+ if (res == -1)
+ return -errno;
+
+ close(res);
+ return 0;
+
+}
+
+static int vodfs_read(const char *path, char *buf, size_t size, off_t offset,
+ struct fuse_file_info *fi) {
+ int fd;
+ int res;
+ int i;
+ size_t got;
+
+ (void) fi;
+ if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ if (offset < inbuf.len) {
+ if (offset + size > inbuf.len) {
+ got = inbuf.len - offset;
+ memcpy(buf, inbuf.buf, got*sizeof(char));
+ } else
+ got = size;
+ } else
+ got = 0;
+ return got;
+ } else {
+ pthread_rwlock_rdlock(&list_lock);
+ if ( (i=name_index(path+1)) != -1 ) {
+ if (!playlist.vodlist[i]) {
+ pthread_rwlock_unlock(&list_lock);
+ return -EIO;
+ }
+ if ( (playlist.vodlist[i]->status == VOD_STATUS_ERROR) ) {
+ if (!playlist.vodlist[i]) {
+ pthread_mutex_lock(&vod_lock);
+ vod_close(playlist.vodlist[i]);
+ pthread_mutex_unlock(&vod_lock);
+ }
+ playlist.vodlist[i] = NULL;
+ name_free(i);
+ pthread_rwlock_unlock(&list_lock);
+ return -EIO;
+ }
+ pthread_mutex_lock(&vod_lock);
+ if(vod_seek(playlist.vodlist[i], offset, SEEK_SET) == -1) {
+ pthread_mutex_unlock(&vod_lock);
+ pthread_rwlock_unlock(&list_lock);
+ return -EIO;
+ }
+ res = vod_read(playlist.vodlist[i], buf, size);
+ pthread_mutex_unlock(&vod_lock);
+ pthread_rwlock_unlock(&list_lock);
+ if(res == -1)
+ return -EIO;
+ else if ( (res == size) || (offset+res == playlist.vodlist[i]->filesize) )
+ return res;
+ else
+ return -EIO; //must read full size of reach EOF
+ }
+ pthread_rwlock_unlock(&list_lock);
+ }
+ fd = open(path+1, O_RDONLY);
+ if (fd == -1)
+ return -errno;
+ res = pread(fd, buf, size, offset);
+ if (res == -1)
+ res = -errno;
+ close(fd);
+ return res;
+}
+
+static int vodfs_write(const char *path, const char *buf, size_t size,
+ off_t offset, struct fuse_file_info *fi) {
+ int fd;
+ int res;
+
+ (void) fi;
+ if (strcmp(path+1, INPUT_FILENAME) == 0) {
+ if((offset <= inbuf.len) && (offset + size < MAXBUFSIZE)) {
+ memcpy(inbuf.buf, buf, size);
+ inbuf.len = MAX(inbuf.len, offset+size);
+ return size;
+ } else
+ return -EIO;
+ }
+ fd = open(path+1, O_WRONLY);
+ if (fd == -1)
+ return -errno;
+
+ res = pwrite(fd, buf, size, offset);
+ if (res == -1)
+ res = -errno;
+
+ close(fd);
+ return res;
+}
+
+static int vodfs_statfs(const char *path, struct statvfs *stbuf) {
+ int res;
+ (void) path;
+
+ res = statvfs(".", stbuf);
+ if (res == -1)
+ return -errno;
+
+ return 0;
+}
+
+static int vodfs_release(const char *path, struct fuse_file_info *fi) {
+ int i;
+
+ (void) fi;
+ pthread_rwlock_wrlock(&list_lock);
+ if(strcmp(path+1, INPUT_FILENAME) == 0) {
+ while (playlist.ct) {
+ if (playlist.vodlist[0]) {
+ pthread_mutex_lock(&vod_lock);
+ vod_close(playlist.vodlist[0]);
+ pthread_mutex_unlock(&vod_lock);
+ }
+ playlist.vodlist[0] = NULL;
+ name_free(0);
+ }
+ parse_input(&inbuf, &playlist);
+ } else if ( (i=name_index(path+1)) != -1 ) {
+ /*
+ if (playlist.vodlist[i]) {
+ pthread_mutex_lock(&vod_lock);
+ vod_close(playlist.vodlist[i]);
+ pthread_mutex_unlock(&vod_lock);
+ }
+ playlist.vodlist[i] = NULL;
+ name_free(i);
+ */
+ }
+ pthread_rwlock_unlock(&list_lock);
+ return 0;
+}
+
+static int vodfs_fsync(const char *path, int isdatasync, struct fuse_file_info *fi) {
+
+ /* Just a stub. This method is optional and can safely be left unimplemented */
+ (void) path;
+ (void) isdatasync;
+ (void) fi;
+ return 0;
+}
+
+static void *vodfs_init(struct fuse_conn_info *conn) {
+ (void) conn;
+
+ fchdir(targetFd); /* that's the catch */
+ bzero(&inbuf, sizeof(buffer_t));
+ bzero(&playlist, sizeof(playlist_t));
+
+ return NULL;
+}
+
+static void vodfs_destroy(void *arg) {
+ int i;
+
+ free((vod_t **)playlist.vodlist);
+ close(targetFd);
+}
+
+#ifdef HAVE_SETXATTR
+/* xattr operations are optional and can safely be left unimplemented */
+static int vodfs_setxattr(const char *path, const char *name, const char *value,
+ size_t size, int flags) {
+
+ if (strcmp(path, INPUT_FILENAME) == 0)
+ return -EACCES;
+ if (lsetxattr(path+1, name, value, size, flags) == -1)
+ return -errno;
+ return 0;
+}
+
+static int vodfs_getxattr(const char *path, const char *name, char *value,
+ size_t size) {
+ int res;
+
+ if (strcmp(path, INPUT_FILENAME) == 0)
+ return -EACCES;
+ res = lgetxattr(path+1, name, value, size);
+ if (res == -1)
+ return -errno;
+ return res;
+}
+
+static int vodfs_listxattr(const char *path, char *list, size_t size) {
+ int res;
+
+ if (strcmp(path, INPUT_FILENAME) == 0)
+ return -EACCES;
+ res = llistxattr(path+1, list, size);
+ if (res == -1)
+ return -errno;
+ return res;
+}
+
+static int vodfs_removexattr(const char *path, const char *name) {
+
+ if (strcmp(path, INPUT_FILENAME) == 0)
+ return -EACCES;
+ if (lremovexattr(path+1, name) == -1)
+ return -errno;
+ return 0;
+}
+#endif /* HAVE_SETXATTR */
+
+static struct fuse_operations vodfs_oper = {
+ .getattr = vodfs_getattr,
+ .access = vodfs_access,
+ .readlink = vodfs_readlink,
+ .readdir = vodfs_readdir,
+ .mknod = vodfs_mknod,
+ .mkdir = vodfs_mkdir,
+ .symlink = vodfs_symlink,
+ .unlink = vodfs_unlink,
+ .rmdir = vodfs_rmdir,
+ .rename = vodfs_rename,
+ .link = vodfs_link,
+ .chmod = vodfs_chmod,
+ .chown = vodfs_chown,
+ .truncate = vodfs_truncate,
+ .utime = vodfs_utime,
+ .open = vodfs_open,
+ .read = vodfs_read,
+ .write = vodfs_write,
+ .statfs = vodfs_statfs,
+ .release = vodfs_release,
+ .fsync = vodfs_fsync,
+ .init = vodfs_init,
+ .destroy = vodfs_destroy,
+#ifdef HAVE_SETXATTR
+ .setxattr = vodfs_setxattr,
+ .getxattr = vodfs_getxattr,
+ .listxattr = vodfs_listxattr,
+ .removexattr= vodfs_removexattr,
+#endif
+};
+
+void sigkill_handler(int signo) {
+ closelog();
+};
+
+int main(int argc, char *argv[]) {
+ struct stat mpstat;
+ struct sigaction sig_act;
+ int sr;
+ char* fusev[4];
+
+ argv0 = argv[0];
+ if (argc != 2) {
+ (void) fprintf(stderr, "usage: %s mount-point\n", argv0);
+ (void) fprintf(stderr, ">>> Version: %s <<<\n", VERSION);
+ return 1;
+ }
+ argv1 = argv[1];
+
+ sr = stat(argv1, &mpstat);
+ if (sr < 0) {
+ (void) fprintf(stderr, "%s: bad mount-point %s\n", argv0, argv1);
+ return 1;
+ }
+
+ if ((mpstat.st_mode & S_IFDIR) == 0) {
+ (void) fprintf(stderr, "%s: %s is not a directory\n", argv0, argv1);
+ return 1;
+ }
+
+ if ((targetFd = open(argv1, 0)) == -1) {
+ (void) fprintf(stderr, "%s: open %s failed\n", argv0, argv1);
+ return 1;
+ }
+
+ openlog("vodfs", LOG_CONS | LOG_NDELAY, 0);
+ sigemptyset(&sig_act.sa_mask);
+ sig_act.sa_handler = sigkill_handler;
+ sig_act.sa_flags = 0;
+ sigaction(SIGKILL, &sig_act, NULL);
+
+ fusev[0] = argv0;
+ fusev[1] = "-o";
+ fusev[2] = "nonempty";
+ fusev[3] = argv1;
+ return fuse_main(4, fusev, &vodfs_oper, NULL);
+}
+
Added: truran-xine/branches/fuse/trunk/src/fuse/vodfs.h
===================================================================
--- truran-xine/branches/fuse/trunk/src/fuse/vodfs.h (rev 0)
+++ truran-xine/branches/fuse/trunk/src/fuse/vodfs.h 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,28 @@
+#include <string.h>
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+#include "url_parse.h"
+#include "vod.h"
+
+#define MAXBUFSIZE 1000
+#define MAXNAMELEN 100
+#define MAXPLAY 1
+#define MAX(a,b) ((a<b)?(b):(a))
+
+struct _playlist_t {
+ int ct;
+ size_t filesize[MAXPLAY];
+ vod_t* vodlist[MAXPLAY];
+ char* uri[MAXPLAY];
+ char* playname[MAXPLAY];
+};
+
+struct _buffer_t {
+ int len;
+ char buf[MAXBUFSIZE];
+};
+
+typedef struct _playlist_t playlist_t;
+typedef struct _buffer_t buffer_t;
+
Added: truran-xine/branches/fuse/trunk/src/include/misc.h
===================================================================
--- truran-xine/branches/fuse/trunk/src/include/misc.h (rev 0)
+++ truran-xine/branches/fuse/trunk/src/include/misc.h 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2006 Shixin Zeng(shi...@sj...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: url_parse.h 272 2006-06-01 15:01:49Z pupilzeng $
+ */
+#ifndef VOD_MISC_H
+#define VOD_MISC_H
+
+#include <stdio.h>
+#include "platforms.h" /* for strdup() */
+#define NULL_OR_DUP(x) ((x) == NULL ? NULL : strdup(x))
+
+#define CHECK_FREE(p) \
+ do{\
+ if((p) != NULL){\
+ free((void*)(p));\
+ (p) = NULL;\
+ }\
+ }while(0)
+
+#ifdef __cplusplus
+ #define BEGIN_DECLS extern "C" {
+ #define END_DECLS }
+#else
+ #define BEGIN_DECLS
+ #define END_DECLS
+#endif
+
+#if defined(_DEBUG)
+ #if __STDC_VERSION__ >= 199901L
+ #define DPRINTF(...) \
+ do {\
+ fprintf(stderr, "%s, %d: ", __func__, __LINE__); \
+ fprintf(stderr, ##__VA_ARGS__);\
+ }while(0)
+ #elif defined(__GNUC__)
+ #define DPRINTF(args...) \
+ do {\
+ fprintf(stderr, "%s, %d: ", __FUNCTION__, __LINE__); \
+ fprintf(stderr, ##args);\
+ }while(0)
+ #elif _MSC_VER >= 1400 /* Variadic macro is supported since VS 8 */
+ #define DPRINTF(...)\
+ do{\
+ fprintf(stderr, "%s, %d: ", __FUNCTION__, __LINE__); \
+ fprintf(stderr, __VA_ARGS__);\
+ }while(0)
+ #else
+ #include <stdarg.h>
+ static void DPRINTF(const char *fmt, ...)
+ {
+ va_list va;
+ va_start(va, fmt);
+ int fd;
+ fd = open("/tmp/debug", O_APPEND);
+ fprintf(fd, "%s, %d: \n", __FUNCTION__, __LINE__);
+ vfprintf(fd, fmt, va);
+ va_end(va);
+ }
+ #endif /* __STDC_VERSION__ */
+#else
+ #if __STDC_VERSION__ >= 199901L
+ #define DPRINTF(...)
+ #elif defined(__GNUC__)
+ #define DPRINTF(args...)
+ #elif _MSC_VER >= 1400 /* VS 2005 */
+ #define DPRINTF(...)
+ #else
+ static __inline__ void DPRINTF(const char *fmt, ...)
+ {
+ }
+ #endif /* __STDC_VERSION__ */
+#endif /* _DEBUG */
+#endif //VOD_MISC_H
Added: truran-xine/branches/fuse/trunk/src/include/platforms.h
===================================================================
--- truran-xine/branches/fuse/trunk/src/include/platforms.h (rev 0)
+++ truran-xine/branches/fuse/trunk/src/include/platforms.h 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2006 Shixin Zeng(shi...@sj...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id$
+ */
+
+ /* Note:
+ * This file must be the last included header file
+ */
+#ifndef VOD_PLATFORMS_H
+#define VOD_PLATFORMS_H
+
+#ifndef HAVE_CONFIG_H
+#error "config.h must be included before including this file"
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ /* off_t
+ * size_t
+ * ssize_t
+ */
+ #ifdef _WIN32
+ typedef long socklen_t;
+ #endif /* _WIN32 */
+ #ifdef _MSC_VER
+ typedef long ssize_t;
+ #endif /* _MSC_VER */
+#endif /* HAVE_SYS_TYPES_H */
+
+#ifdef HAVE_STDINT_H
+ #include <stdint.h> /* fixed size int */
+#elif defined(_WIN32)
+ typedef int int32_t;
+ typedef unsigned uint32_t;
+#else
+ #error "Do not known how to produce fixed-size integers"
+#endif /* HAVE_STDINT_H */
+
+#ifdef HAVE_STDDEF_H
+ #include <stddef.h> /* size_t */
+#else
+ typedef long unsigned size_t;
+#endif /* HAVE_STDDEF_H */
+
+#ifndef HAVE_UNISTD_H
+ #define STDIN_FILENO 0
+ #define STDOUT_FILENO 1
+ #define STDERR_FILENO 2
+#endif
+
+#ifdef _MSC_VER
+ #include <crtdbg.h>
+ #define sleep(x) Sleep(1000*(x))
+ #define snprintf sprintf_s
+ #define strdup(s) _strdup(s)
+ #define strncpy(d, s, l) strncpy_s(d, l, s, l)
+ #define memcpy(d, s, l) memcpy_s(d, l, s, l)
+ #define memmove(d, s, l) memmove_s(d, l, s, l)
+ #define __inline__
+#elif defined(__GNUC__)
+ #define memcpy(d, s, l) __builtin_memcpy(d, s, l)
+ #define memmove(d, s, l) __builtin_memmove(d, s, l)
+ #define strlen(s) __builtin_strlen(s)
+ #ifndef strdup
+ #define strdup(x) __builtin_strdup(x)
+ #endif
+ #ifndef strncpy
+ #define strncpy(d, s, l) __builtin_strncpy(d, s, l)
+ #endif
+ #define snprintf(fmt, ...) __builtin_snprintf(fmt, ##__VA_ARGS__)
+#endif /* _MSC_VER */
+
+#ifdef _WIN32
+ #ifdef BUILDING_DLL
+ #define DLLPUBLIC __declspec(dllexport)
+ #elif defined(IMPORT_DLL)
+ #define DLLPUBLIC __declspec(dllimport)
+ #else
+ #define DLLPUBLIC
+ #endif
+ #define DLLLOCAL
+#else
+ #ifdef HAVE_GCCVISIBILITYPATCH
+ #define DLLPUBLIC __attribute__ ((visibility("default")))
+ #define DLLLOCAL __attribute__ ((visibility("hidden")))
+ #else
+ #define DLLPUBLIC
+ #define DLLLOCAL
+ #endif
+#endif// _WIN32
+
+#endif /* VOD_PLATFORMS_H */
Added: truran-xine/branches/fuse/trunk/src/lib/CMakeLists.txt
===================================================================
--- truran-xine/branches/fuse/trunk/src/lib/CMakeLists.txt (rev 0)
+++ truran-xine/branches/fuse/trunk/src/lib/CMakeLists.txt 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,19 @@
+INCLUDE_DIRECTORIES(${TRUVOD_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${TRUVOD_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${TRUVOD_BINARY_DIR}/include)
+ADD_DEFINITIONS(-D_REENTRANT -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64)
+ADD_LIBRARY(vod cache.c vod_io_default_functions.c vod.c)
+LINK_DIRECTORIES(${TRUVOD_BINARY_DIR}/utils)
+IF(_WIN32)
+TARGET_LINK_LIBRARIES(vod wsock32 vodutils)
+ELSE(_WIN32)
+TARGET_LINK_LIBRARIES(vod vodutils)
+SET_TARGET_PROPERTIES(vod
+ PROPERTIES COMPILE_FLAGS -fPIC)
+ENDIF(_WIN32)
+ADD_DEPENDENCIES(vod vodutils)
+IF(RECONNECT)
+ SET_SOURCE_FILES_PROPERTIES(
+ vod.c
+ COMPILE_FLAGS -DRECONNECT)
+ENDIF(RECONNECT)
Added: truran-xine/branches/fuse/trunk/src/lib/cache.c
===================================================================
--- truran-xine/branches/fuse/trunk/src/lib/cache.c (rev 0)
+++ truran-xine/branches/fuse/trunk/src/lib/cache.c 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2006 Shixin Zeng(shi...@sj...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: cache.c 371 2006-10-26 09:15:10Z pupilzeng $
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+
+#include "cache.h"
+#include "misc.h"
+#include "platforms.h"
+
+/** Implementation
+ * a cycle cache
+ * The memory layout is:
+ *
+ * stream_pos
+ * |
+ * +-------------+---------------+------------------+ +----------------------
+ * | | stream data | free space | | file stream input
+ * +-------------+---------------+------------------+ +----------------------
+ * ^ ^ ^ ^
+ * | | | |
+ * data head head+size data + capacity
+ *
+ * data: the beginning address of the space.
+ * head: the beginning address of the stream data to be read. AND the end of the @(stream data) when the cache is full.
+ * size: the actual size of the stream data.
+ * capacity: the maximun size of the space @data.
+ * stream_pos: the stream position of @head, which is measured in the file stream.
+ *
+ * The @(stream data) must be a consecutive stream, and its end must be the begining of the @(file stream input).
+ * So if @(stream_pos + size) != position of @(file stream input), the cache is dirty. All current data must be cleared.
+ *
+ * Suppose that you want to read a block of data from @pos:
+ * if @pos is between @stream_pos and @(stream_pos + size), the cache is hit, and the max size could be read is @size.
+ * Otherwise, the cache isn't hit. All of the data must be read from @(file stream input) directly.
+ *
+ * Initial status:
+ * head = data;
+ * size = 0;
+ * stream_pos = 0;
+ */
+
+cache_t * cache_new(size_t capacity)
+{
+ cache_t *cache = (cache_t*)malloc(sizeof(cache_t));
+ if(cache == NULL)
+ return NULL;
+ cache->data = (char *)malloc(capacity);
+ cache->head = cache->data;
+ cache->size = 0;
+ cache->capacity = capacity;
+ cache->stream_pos = 0;
+ cache->put = vod_cache_put;
+ cache->get = vod_cache_get;
+ cache->reset = vod_cache_reset;
+ cache->free = vod_cache_free;
+
+ return cache;
+}
+
+void vod_cache_free(cache_t *cache)
+{
+ if(cache == NULL)
+ return ;
+ CHECK_FREE(cache->data);
+ free(cache);
+}
+
+void vod_cache_reset(cache_t *cache)
+{
+ cache->size = 0;
+ cache->head = cache->data;
+ cache->stream_pos = 0;
+}
+
+void vod_cache_put(cache_t *this, off_t stream_pos, void *buf, size_t size)
+{
+ DPRINTF("size = %u, stream_pos = %ld\n", size, stream_pos);
+
+ if(size >= this->capacity){
+ this->head = this->data;
+ this->stream_pos = stream_pos + size - this->capacity;
+ this->size = this->capacity;
+ memcpy(this->data, (char *)buf + size - this->capacity, this->capacity);
+ return ;
+ }
+
+ if(this->size == 0){
+ DPRINTF("cache is empty now\n");
+ /* this->head = this->data; */
+ /* size < this->capacity) */
+ this->stream_pos = stream_pos;
+ memcpy(this->data, buf, size);
+ this->size = size;
+ DPRINTF("cache is empty END\n");
+ return ;
+ }
+
+ DPRINTF("this->size = %u, this->stream_pos = %lld, stream_pos = %lld\n", this->size, this->stream_pos, stream_pos);
+ if(this->size + this->stream_pos < stream_pos
+ || this->stream_pos > stream_pos){
+ /* the cache is dirty, reset it */
+ DPRINTF("Dirty cache, reset it\n");
+ DPRINTF("this->size(%u) + this->stream_pos(%lld) (= %lld) != stream_pos(%lld)\n",
+ this->size, this->stream_pos, this->size + this->stream_pos, stream_pos);
+ this->reset(this);
+ this->put(this, stream_pos, buf, size);
+ return ;
+ }else if(this->size + this->stream_pos != stream_pos){
+ DPRINTF("Overlap\n");
+ /* overlap between cache and the input */
+ /* the overlap bytes is not necessary to copy */
+ size_t skip = this->size - (stream_pos - this->stream_pos);
+ size -= skip;
+ buf = (char *)buf + skip;
+ DPRINTF("Will skip %lu bytes\n", skip);
+ }
+
+ /* the cache is clean, appending */
+ if(this->size == this->capacity){ /* the cache is full */
+ /* this->size < this->capacity */
+ size_t after_head = 0;
+ DPRINTF("cache is full, drop some old ones, whose size is %d \n", size);
+ this->stream_pos += size; /* the size squeezed out is @size */
+
+ /* append the data to the end of the current cache */
+ /* because it's a cycle cache, head is also the tail.*/
+ after_head = (this->data + this->capacity) - this->head;
+ if(after_head >= size){
+ memcpy(this->head, buf, size);
+ this->head += size;
+ }else{
+ memcpy(this->head, buf, after_head);
+ memcpy(this->data, (char *)buf + after_head, size - after_head);
+ this->head = this->data + size - after_head; /* the tail is the head */
+ }
+ return;
+ }else{
+ /* the cache isn't full */
+ char *start = NULL;
+ size_t after_start;
+ assert(this->head == this->data);
+ if(size + this->size <= this->capacity){/* the this still isn't full after filling */
+ DPRINTF("There are still free space\n");
+ memcpy(this->data + this->size, buf, size); /* Won't overflow:
+ this->data + this->size + size <= this->data + this->capacity */
+ this->size += size;
+ /* the @head isn't move, so the @stream_pos needn't to be modified */
+ return;
+ }else{ /* the this will be full after filling, old content may be dropped */
+ size_t surplus = size + this->size - this->capacity; /* size < this->capacity, so surplus < this->size */
+ start = this->head + this->size; /* start < this->data + this->capacity, because this->head == this->data */
+ DPRINTF("Surplus\n");
+ assert(start < this->data + this->capacity);
+ this->size = this->capacity;
+ this->stream_pos += surplus;
+ this->head += surplus; /* this->head = (this->data + surplus) < (this->data + this->capacity) */
+ after_start = (this->data + this->capacity) - start; /* after_start < size,
+ because after_start - size = (this->capacity) - (this->size) - size < 0 */
+
+ assert(after_start < size);
+ memcpy(start, buf, after_start);
+ memcpy(this->data, (char *)buf + after_start, size - after_start);
+ DPRINTF("Surplus ends\n");
+ }
+ }
+ DPRINTF("this->size = %u\n", this->size);
+}
+
+/**
+ * a cycle cache
+ * start
+ * |
+ * +-------------+---------------+
+ * | | |
+ * +-------------+---------------+
+ * ^ ^ ^
+ * | | |
+ * data head data+size
+ * */
+size_t vod_cache_get(cache_t *this, off_t stream_pos, void *buf, size_t size)
+{
+
+ size_t bytes_can_read = 0;
+ char *start = NULL;
+ assert(this != NULL);
+ assert(this->size != 0);
+
+ DPRINTF("Try to get %u bytes from cache\n", size);
+ //DPRINTF("stream_pos = %ld, this = %lx, this->stream_pos = %lld, this->size = %u, this->capacity = %u\n", stream_pos, this, this->stream_pos, this->size, this->capacity);
+ if(stream_pos < this->stream_pos
+ || stream_pos > this->stream_pos + (off_t)this->size)
+ return 0;
+ bytes_can_read = this->size - (stream_pos - this->stream_pos);
+ DPRINTF("this->size = %u\n", this->size);
+ DPRINTF("stream_pos = %lld\n", stream_pos);
+ DPRINTF("this->stream_pos = %lld\n", this->stream_pos);
+ DPRINTF("bytes_can_read = %u\n", bytes_can_read);
+ size = size > bytes_can_read ? bytes_can_read : size;
+ start = this->head + (stream_pos - this->stream_pos);
+ if(this->size < this->capacity){
+ /* when the cache isn't full, this->head = this->data */
+ /* 0 < stream_pos - (this->stream_pos) <= this->size */
+ /* (this->head) < (this->head) + stream_pos - (this->stream_pos) <= (this->head) + (this->size) */
+ /* Namely, (this->head) < start < (this->head) + (this->size) */
+ /* As this->head = this->data */
+ /* (this->data) < start < (this->data) + (this->size) < (this->data) + (this->capacity)*/
+
+ /* start + bytes_can_read = (this->head) + (this->size) < (this->data) + (this->capacity) */
+ /* start + size <= start + bytes_can_read */
+ memcpy(buf, start, size);
+ }else{/* the cache is full */
+ size_t after_start;
+ if(start >= this->data + this->capacity)
+ start -= this->capacity;
+ after_start = this->data + this->capacity - start;
+ if(after_start >= size){
+ memcpy(buf, start, size);
+ }else{
+ memcpy(buf, start, after_start);
+ memcpy(buf + after_start, this->data, size - after_start);
+ }
+ }
+ DPRINTF("return with %lu\n", size);
+ return size;
+}
Added: truran-xine/branches/fuse/trunk/src/lib/cache.h
===================================================================
--- truran-xine/branches/fuse/trunk/src/lib/cache.h (rev 0)
+++ truran-xine/branches/fuse/trunk/src/lib/cache.h 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2006 Shixin Zeng(shi...@sj...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: cache.h 378 2006-10-29 12:28:40Z pupilzeng $
+ */
+#ifndef CACHE_H
+#define CACHE_H
+
+#include "misc.h"
+#include "platforms.h"
+
+BEGIN_DECLS
+
+typedef struct cache_s{
+ char *data; /**< where the data store */
+ char *head; /**< the head indicator */
+ size_t size; /**< how big of the cache being used? */
+ size_t capacity; /**< the maximum size of data */
+
+ off_t stream_pos; /**< position pointer */
+
+/**
+ * @brief put a block of data to the cache
+ *
+ * @param cache
+ * @param stream_pos the position where the data pointing by @buf begins
+ * @param buf the data to be put into the cache
+ * @param size the size of the @buf
+ */
+ void (*put)(struct cache_s *cache, off_t stream_pos, void *buf, size_t size);
+/**
+ * @brief gut a block of data from the cache
+ *
+ * @param cache
+ * @param stream_pos the position where the data to be get begins
+ * @param buf where the data to be put from the cache
+ * @param size how many bytes of data to be read?
+ */
+ size_t (*get)(struct cache_s *cache, off_t stream_pos, void *buf, size_t size);
+/**
+ * @brief free the cache, including itself
+ *
+ * @param cache the cache to be freed
+ */
+ void (*free)(struct cache_s *cache);
+/**
+ * @brief reset the cache to the initial status
+ *
+ * @param cache the cache to be reset
+ */
+ void (*reset)(struct cache_s *cache);
+}cache_t;
+
+/** --------------------------------------------------------------------------
+ * @brief cache_new
+ * create a new cache
+ *
+ * @param size the size of the cache to create
+ *
+ * @return the new created cache on success, NULL otherwise
+ ----------------------------------------------------------------------------*/
+cache_t * cache_new(size_t size);
+
+void vod_cache_free(cache_t *cache);
+
+void vod_cache_reset(cache_t *cache);
+
+void vod_cache_put(cache_t *cache, off_t stream_pos, void *buf, size_t size);
+
+size_t vod_cache_get(cache_t *cache, off_t stream_pos, void *buf, size_t size);
+
+END_DECLS
+#endif
Added: truran-xine/branches/fuse/trunk/src/lib/vod.c
===================================================================
--- truran-xine/branches/fuse/trunk/src/lib/vod.c (rev 0)
+++ truran-xine/branches/fuse/trunk/src/lib/vod.c 2008-03-18 07:13:20 UTC (rev 434)
@@ -0,0 +1,730 @@
+/*
+ * Copyright (C) 2006 Shixin Zeng(shi...@sj...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: vod.c 399 2006-11-16 07:08:32Z pupilzeng $
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#else
+ #ifdef _MSC_VER
+ #define strcasecmp _stricmp
+ #else
+ #error "Can't find strings.h"
+ #endif
+#endif
+#ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+ #include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+ #include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+ #include <netdb.h>
+#endif
+#ifdef _WIN32
+ #include <winsock.h>
+#endif
+
+#include "vod_io_default_functions.h"
+#include "vod.h"
+#include "utils/url_parse.h"
+#include "utils/uptime.h"
+#include "platforms.h"
+#ifndef ENABLE_NLS
+#define _(str) (str)
+#endif
+#define MAX_TRIES 500
+#define SEEK_WITH_READ (1024*1024) /*seek implemented with read when forward reading SEEK_WITH_READ */
+#define CACHE_SIZE SEEK_WITH_READ
+
+
+
+#if __GNUC__ == 2
+#pragma pack(1)
+#else
+#pragma pack(push,1)
+#endif
+
+typedef struct {
+ char magic[4];
+ uint32_t ver; /* always 00 02 00 00 */
+ uint32_t type; /* ok = 00 00 00 00, err = 0c 00 00 00 */
+ uint32_t unknown1; /* always 00 00 00 00 */
+ uint32_t len_lo; /* lower 32 bits of length */
+ uint32_t len_hi; /* higher 32 bits of length */
+ int32_t pos_lo; /* lower 32 bits of position */
+ int32_t pos_hi; /* higher 32 bits of position */
+ uint32_t unknown2; /* always 00 00 01 00 */
+ uint32_t unknown3; /* always 00 00 00 00 */
+ uint32_t unknown4; /* ok = 64 00 00 00, err = 00 00 00 00 */
+ char errmsg[100];
+ char name[260];
+ char date[19];
+ char unkown5[89];
+} m_response_t;
+
+#if __GNUC__ == 2
+#pragma pack()
+#else
+#pragma pack(pop)
+#endif
+
+/* **************************************************************** */
+/* Private functions */
+/* **************************************************************** */
+
+static char* get_comment(const cha...
[truncated message content] |
|
From: <ia...@us...> - 2008-03-18 07:08:42
|
Revision: 433
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=433&view=rev
Author: iacat
Date: 2008-03-18 00:08:37 -0700 (Tue, 18 Mar 2008)
Log Message:
-----------
very small bug
Modified Paths:
--------------
truran-xine/trunk/src/lib/vod.c
truran-xine/trunk/src/lib/vod.h
Modified: truran-xine/trunk/src/lib/vod.c
===================================================================
--- truran-xine/trunk/src/lib/vod.c 2008-03-15 07:32:36 UTC (rev 432)
+++ truran-xine/trunk/src/lib/vod.c 2008-03-18 07:08:37 UTC (rev 433)
@@ -84,8 +84,8 @@
uint32_t ver; /* always 00 02 00 00 */
uint32_t type; /* ok = 00 00 00 00, err = 0c 00 00 00 */
uint32_t unknown1; /* always 00 00 00 00 */
- int32_t len_lo; /* lower 32 bits of length */
- int32_t len_hi; /* higher 32 bits of length */
+ uint32_t len_lo; /* lower 32 bits of length */
+ uint32_t len_hi; /* higher 32 bits of length */
int32_t pos_lo; /* lower 32 bits of position */
int32_t pos_hi; /* higher 32 bits of position */
uint32_t unknown2; /* always 00 00 01 00 */
@@ -231,7 +231,7 @@
this->stream_datetime = strdup(resp->date);
}
this->filesize = resp->len_lo;
-#ifdef __USE_FILE_OFFSET64
+#if (_FILE_OFFSET_BITS == 64)
this->filesize = resp->len_hi;
this->filesize <<= (sizeof(resp->len_lo)*8);
this->filesize += resp->len_lo;
Modified: truran-xine/trunk/src/lib/vod.h
===================================================================
--- truran-xine/trunk/src/lib/vod.h 2008-03-15 07:32:36 UTC (rev 432)
+++ truran-xine/trunk/src/lib/vod.h 2008-03-18 07:08:37 UTC (rev 433)
@@ -138,7 +138,6 @@
typedef struct {
// char *url;
- void *other;
url_t purl; /**< parsed url */
vod_connection_t conn; /**< file description */
@@ -163,6 +162,7 @@
vod_connect_func_t connect;
vod_connect_finish_t connect_finish;
vod_connection_destroy_t connection_destroy;
+ void *other;
}vod_t;
/* vod_open:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-03-15 07:32:40
|
Revision: 432
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=432&view=rev
Author: iacat
Date: 2008-03-15 00:32:36 -0700 (Sat, 15 Mar 2008)
Log Message:
-----------
Decide to rewrite libvod so remove anything
Removed Paths:
-------------
truran-xine/branches/fuse/AUTHORS
truran-xine/branches/fuse/COPYING
truran-xine/branches/fuse/CREDITS
truran-xine/branches/fuse/ChangeLog
truran-xine/branches/fuse/Makefile.am
truran-xine/branches/fuse/NEWS
truran-xine/branches/fuse/acinclude.m4
truran-xine/branches/fuse/configure.in
truran-xine/branches/fuse/docs/
truran-xine/branches/fuse/src/
Deleted: truran-xine/branches/fuse/AUTHORS
===================================================================
--- truran-xine/branches/fuse/AUTHORS 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/AUTHORS 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,2 +0,0 @@
-Shixin Zeng(shi...@sj...)
-Wang Kai(fe...@gm...)
Deleted: truran-xine/branches/fuse/COPYING
===================================================================
--- truran-xine/branches/fuse/COPYING 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/COPYING 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
Deleted: truran-xine/branches/fuse/CREDITS
===================================================================
--- truran-xine/branches/fuse/CREDITS 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/CREDITS 2008-03-15 07:32:36 UTC (rev 432)
@@ -1 +0,0 @@
-pig...@bb...: The author of the truran patch for mplayer
Deleted: truran-xine/branches/fuse/ChangeLog
===================================================================
--- truran-xine/branches/fuse/ChangeLog 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/ChangeLog 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,940 +0,0 @@
-2008-01-15 Shixin Zeng <zen...@gm...>
-
- * debian/changelog: replaced with a template, non-specific to distribution
- * ppa.py: added for automatically updating ubuntu PPA, not tested yet
-
-2008-01-09 Shixin Zeng <zen...@gm...>
-
- * src/frontends/gstreamer/gstvodsrc.c: Correct the ORIGIN to
- the website
-
-2007-10-08 Shixin Zeng <zen...@gm...>
-
- * Add run-time version checking functions
- * configure.in: add check for inline
- * src/include/platforms.h:
- * src/lib/Makefile.am: add version.c
- * src/lib/version.c: (vod_version_major), (vod_version_minor),
- (vod_version_macro), (vod_version_string): New
-
-2007-09-01 Shixin Zeng <zen...@gm...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_dispose),
- (vod_plugin_open), (vod_class_get_instance): remove preprocess
- compilation condition LOG
-
-2007-07-08 Shixin Zeng <zen...@gm...>
-
- * src/frontends/gstreamer/gstvodsrc.c: cleanups
- * src/lib/vod_io_default_functions.c: account for interrupt in
- vod_io_default_connect_finish.
-
-2007-05-01 Shixin Zeng <zen...@gm...>
-
- * configure.in: beautify the help system. use @<:@ and @:>@ to produce '['
- and ']'
-
-2006-11-20 Shixin Zeng <shi...@sj...>
-
- * make distcheck runs
- * src/frontends/gnome-vfs/Makefile.am: add include path for version.h
- in case that the builddir is different from srcdir
- * src/frontends/gstreamer/Makefile.am: ditto
- * src/frontends/xine-lib/Makefile.am: ditto
- * src/lib/Makefile.am: ditto
- * src/test/Makefile.am: ditto
- * src/utils/Makefile.am: ditto
-
-2006-11-20 Shixin Zeng <shi...@sj...>
-
- * src/frontends/gnome-vfs/vod-module.conf: new
- * src/frontends/gnome-vfs/Makefile.am: install vod-module.conf
-
-2006-11-16 Shixin Zeng <shi...@sj...>
-
- * the frontend gnomevfs functional
- * src/frontends/gnome-vfs/Makefile.am:
- * src/frontends/gnome-vfs/vod-gnomevfs.c: (vod_gnomevfs_io),
- (vod_gnomevfs_readall), (vod_gnomevfs_writeall),
- (vod_gnomevfs_connection_destroy), (do_open), (do_close),
- (do_read), (do_seek), (do_tell), (do_is_local), (vfs_module_init):
- * src/frontends/xine-lib/input_vod.c: include missing <errno.h>,
- higher the proprioty to 1000, to make it be loaded before gnomevfs
- * src/lib/vod.c: (prepare_request): remove the possible proceeding
- '/' in filepath
- * src/utils/url_parse.c: (url_parse), (purl_to_string): include '/' in
- the filepath
- * src/test/valid_urls.c: change results corresponding to the
- proceeding '/' in the filepath
-
-2006-11-16 Shixin Zeng <shi...@sj...>
-
- * src/test/Makefile.am: read random data from /dev/urandom instead of
- /dev/random, which return data of random length rather than of fix
- length. Misc cleanups
-
-2006-11-15 Shixin Zeng <shi...@sj...>
-
- * src/utils/url_parse.c: Simplify error processing by goto
- statements
-
-2006-11-06 Shixin Zeng <shi...@sj...>
-
- * configure.in: add --enable-gcov
- * src/lib/vod.c: (get_response): add big-endian process
- * src/test/Makefile.am: replace relative path with $(top_srcdir)
- * src/utils/vodutils.c:
- (swap32): New, swap the byte order.
- * src/utils/vodutils.h: ditto
-
-2006-11-06 Shixin Zeng <shi...@sj...>
-
- * configure.in: get plugin directory from xine_plugin_dir
-
-2006-11-06 Shixin Zeng <shi...@sj...>
-
- Now the package could be build from external directory.
-
- * src/Makefile.am: add noinst_HEADERS
- * src/frontends/gnome-vfs/vod-gnomevfs.h: unneeded
- * src/frontends/gnome-vfs/Makefile.am: replace relative include path
- with path specified by $(top_srcdir), replace libadd path with the
- one specified by $(top_buildir)
- * src/frontends/gstreamer/Makefile.am: ditto
- * src/frontends/xine-lib/Makefile.am: ditto
- * src/lib/Makefile.am: ditto, inculde only its own headers.
- * src/test/Makefile.am: ditto
- * src/utils/Makefile.am: ditto, noinst_HEADERS moved from
- lib/Makefile.am
-
-2006-10-31 Shixin Zeng <shi...@sj...>
-
- * src/test/Makefile.am: add gcov
- * src/test/cache_test.c: test all of the code lines in cache.c except
- cases of out of memory
- * src/test/check.c: (vod_suite): set timeout of tc_vod to 10
- * src/test/invalid_urls.c: (START_TEST): test purl_free
- * src/test/valid_urls.c: (START_TEST): test purl_to_string
- * src/test/vod_test.c: (START_TEST): test a good url
- * src/utils/url_parse.c: (purl_to_string): process case of out of
- memory
-
-2006-10-30 Shixin Zeng <shi...@sj...>
-
- * gstreamer plugin now could be loaded correctly. Not function yet
- thought.
- * src/frontends/gstreamer/Makefile.am:
- * src/frontends/gstreamer/gstvodsrc.c: (gst_vod_src_init),
- (gst_vod_src_finalize), (gst_vod_src_set_location),
- (gst_vod_src_get_property), (gst_vod_src_create_read),
- (gst_vod_src_start), (gst_vod_src_stop), (gst_vod_src_uri_set_uri),
- (plugin_init):
- * src/frontends/gstreamer/gstvodsrc.h:
-
-2006-10-29 Shixin Zeng <shi...@sj...>
-
- * configure.in: add a new frontend gstreamer, just a protype, not
- tested yet.
- * src/frontends/gstreamer/Makefile.am: New
- * src/frontends/gstreamer/gstvodsrc.c: New
- * src/frontends/gstreamer/gstvodsrc.h: New
-
-2006-10-29 Shixin Zeng <shi...@sj...>
-
- * src/CMakeLists.txt:
- * src/config.h.cmake: dos2unix
- * src/frontends/xine-lib/CMakeLists.txt:
- * src/frontends/xine-lib/Makefile.am: remove io_helper.c from the source
- file list.
- * src/frontends/xine-lib/input_vod.c:
- (vod_plugin_read): fix a typo
- (vod_plugin_open): remore building warning
- * src/frontends/xine-lib/io_functions.c: WORKAROUND_X86_64 is not needed
- * src/frontends/xine-lib/io_helper.c: ditto
- * src/lib/CMakeLists.txt:
- * src/version.h.cmake: dos2unix
- * README.x86_64: remove WORKAROUND_X86_64 instructions
-
-2006-10-28 Shixin Zeng <shi...@sj...>
-
- * configure.in: detect check only when --enable-build-test
- * src/lib/vod.c: (vod_open_at): make error message more accurate
- * src/lib/vod_io_default_functions.c: print error message only when
- debuging
- * src/test/Makefile.am: make other tests which have not been
- integrated into testsuite be built too.
- * src/test/check.c: (vod_suite): add vod_test and uptime_test
- * src/test/uptime_test.c: integrate to testsuite
- * src/test/vod_test.c: ditto
-
-2006-10-26 Shixin Zeng <shi...@sj...>
-
- * configure.in: add check for unit test
- * src/test/Makefile.am: modified for check
- * src/test/check.c: New, main file for check
- * src/test/cache_test.c: testing for cache.
- * src/test/invalid_urls.c: New, testing for invalid urls.
- * src/test/valid_urls.c: New, testing for valid urls
-
-2006-10-26 Shixin Zeng <shi...@sj...>
-
- * src/include/misc.h: fix __FUNC__ with __FUNCTION__ for GCC
- * src/lib/cache.c: reindent
- (vod_cache_put): handle overlap between cache and the buff
- (vod_cache_get): fix a bug for the case of "size > after_start"
-
-2006-10-24 Shixin Zeng <shi...@sj...>
-
- * src/test/Makefile.am: replace bin_PROGRAMS with noinst_PROGRAMS,
- delete unneeded install and uninstall
-
-2006-10-22 Shixin Zeng <shi...@sj...>
-
- * src/test/vod_url.dat: add URL with host omited
- * src/utils/url_parse.c: (url_parse), (purl_to_string): handle URLs
- with host omitted correctly. fix a segfault in processing URL with
- port but without neither filepath nor "/".
-
-2006-10-22 Shixin Zeng <shi...@sj...>
-
- * configure.in: bump version to 0.3.2
- * src/test/vod_url.dat: reconstruct the URLs, and some more invalid
- URLs to test the robustness of url_parse.
- * src/utils/url_parse.c: (url_parse): exclude some more invalid URLs.
-
-2006-10-15 Shixin Zeng <shi...@sj...>
-
- Version 0.3.1 "bless myself" released
-
- * configure.in:
- bump the version to 0.3.1.
- check user-defined arguments before system headers/libraries to
- dectect the parameter errors as early as possible.
- change --enable-nbc to --disable-nbc because nbc is enabled by default
- * src/test/uptime_test.c: include config.h
- * src/test/vod_gnomevfs_test.c: include stdlib.h to eliminate compile
- warning.
-
-2006-10-12 Shixin Zeng <shi...@sj...>
-
- * configure.in: fix typo which makes DEBUG is always set. remove -g
- from CFLAGS when debug is set to No. Report CLFAGS after configure
-
-2006-10-10 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_read),
- (vod_plugin_seek), (vod_plugin_open): replace XINE_LOG_MSG with
- XINE_LOG_PLUGIN for plugin specific message.
-
-2006-10-10 Shixin Zeng <shi...@sj...>
-
- * src/include/platforms.h: Fix the typo
-
-2006-10-08 Shixin Zeng <shi...@sj...>
-
- * src\test\CMakeLists.txt: New for Cmake
- * src\utils\CMakeLists.txt: ditto
- * src\frontends\gnome-vfs\CMakeLists.txt: ditto
- * src\frontends\xine-lib\CMakeLists.txt: ditto
- * src\frontends\CMakeLists.txt: ditto
- * src\lib\CMakeLists.txt: ditto
- * src\config.h.cmake: ditto
- * src\version.h.cmake: ditto
- * src\CMakeLists.txt: ditto
-
-2006-10-08 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod_io_default_functions.c: fixed the typo
- * src/lib/vod.c: ditto
-
-2006-10-07 Shixin Zeng <shi...@sj...>
-
- * src/include/misc.h: add macros BEGIN_DECLS and END_DECLS
- * src/frontends/gnome-vfs/vod-gnomevfs.h: protect declarations with
- BEGIN_DECLS and END_DECLS for cplusplus compilers
- * src/frontends/xine-lib/io_functions.h: ditto
- * src/frontends/xine-lib/net_buf_ctrl.h: ditto
- * src/lib/cache.h: ditto
- * src/lib/vod.h: ditto
- * src/lib/vod_io_default_functions.h: ditto
- * src/utils/uptime.h: ditto
- * src/utils/url_parse.h: ditto
- * src/utils/vodutils.h: ditto
- However, the code doesn't copmile with g++ because of masive use of
- c++ key word "this" as a variable name.
-
-2006-10-07 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: remove unnecessary header
- files, remove unused macros LOW_WATER_MARK and HIGH_WATER_MARK
- (vod_plugin_read): get error message from vod instead of errno.
- * src/include/platforms.h: reindent
- * src/frontends/xine-lib/io_functions.c: protect header files with
- HAVE_*_H
- * src/lib/vod.c: ditto
- * src/lib/vod_io_default_functions.c: ditto
- * src/utils/vodutils.c: (dump): clean warns
-
-2006-10-07 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/io_functions.c: add unistd.h for close
- * src/lib/vod.c: add strings.h for strcasecmp
- * src/lib/vod_io_default_functions.c: add stdlib.h for malloc
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/include/platforms.h: error if config.h is not included, add a
- note that this file must be included last.
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/lib/Makefile.am: -fvisibility=hidden is already added by
- HAVE_GCCVISIBILITYPATCH() to CFLAGS
- * src/utils/Makefile.am: ditto
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * acinclude.m4: New, add HAVE_GCCVISIBILITY() autoconf macro
- * configure.in: detect whether GCC support -fvisibility=hidden
- * src/frontends/xine-lib/input_vod.c: decorate xine_plugin_info with
- DLLPUBLIC
- * src/lib/Makefile.am: add -fvisibility=hidden to CFLAGS
- * src/utils/Makefile.am: ditto
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/utils/Makefile.am: add -DBUILDING_DLL to CFLAGS
- * src/lib/Makefile.am: ditto
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c
- (prepare_request): fix localetime_r is called when HAVE_LOCALTIME_R
- not defined. sprintf_s only available when _MSC_VER is defined
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.h: fix the typo VOD_VERSION_MACRO
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.h: add DLLPUBLIC attribute to public functions
- * src/utils/vodutils.h: ditto
- * src/utils/uptime.h: ditto, include "platforms.h"
- * src/utils/uptime.c: make uptime.h the last included header.
-
-2006-10-05 Shixin Zeng <shi...@sj...>
-
- * src/lib/cache.h: rename clear to reset
- * src/lib/cache.c: ditto
- * src/lib/vod.h: replace vod_cache_switch with vod_cache_on and vod_cache_off
- * src/lib/vod.c: ditto
- * src/frontends/xine-lib/input_vod.c: replace vod_cache_switch with
- vod_cache_on
-
-2006-10-04 Shixin Zeng <shi...@sj...>
-
- * src/utils/url_parse.h: move some documentation here from url_parse.c
- * src/utils/url_parse.c: likewise
-
-2006-10-04 Shixin Zeng <shi...@sj...>
-
- * src/utils/vodutils.h: document the public functions
- * src/utils/uptime.h: ditto
- * src/utils/url_parse.h: ditto
- * src/lib/cache.h: ditto
- * src/lib/vod.h: ditto
- * Doxyfile: Doxyfile to generate documentation.
-
-2006-10-01 Shixin Zeng <shi...@sj...>
-
- * src/include/platforms.h: avoid redefinition of strdup, strncpy
-
-2006-09-26 Shixin Zeng <shi...@sj...>
-
- * Makefile.am: rename INSTALL.zh_CN to INSTALL.zh_CN.UTF8 for
- DIST_EXTRA
- * configure.in: 0.3.1rc1
-
-2006-09-24 Shixin Zeng <shi...@sj...>
-
- * configure.in: make net_buffer_control is configurable at copmile
- time.
- * src/frontends/xine-lib/input_vod.c:
- (vod_plugin_dispose): protect nbc with ENABLE_NBC
- (vod_class_get_instance): ditto
-
-2006-09-22 Shixin Zeng <shi...@sj...>
-
- * src/include/misc.h: make variadic macro more gcc/VS8 friendly. define
- DPRINTF as a macro instead of function when C99 is supported. fix the
- missing _strdup.
- * src/inlucde/platforms.h: define __inline__ to null for _MSC_VER
-
-2006-09-22 Shixin Zeng <shi...@sj...>
-
- Make Linux platform as the primary platform, use Linux's native
- library function name, rename it with #defines for other platforms
- when neccessary.
-
- * src/utils/url_parse.c: replace _strdup with strdup
- * src/lib/vod.c: ditto
- * src/include/platforms.h: use some functions' builtin version
- when available, such as memcpy.
-
-2006-09-17 Shixin Zeng <shi...@sj...>
-
- Disable net_buffer_control, as it causes totem to crash when seeking
- with the middle button.
-
- * src/frontends/xine-lib/input_vod.c
- (vod_plugin_dispose): disable net_buffer_control
- (vod_class_get_instance): ditto
-
-2006-09-16 Shixin Zeng <shi...@sj...>
-
- * svnCommit.pl: New, extract changelog from ChangeLog and commit
-
-2006-09-16 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): fflush after
- writing url to prevent data loss
- * src/test/Makefile.am: make install and uninstall do nothing
- * src/test/cache_test.c: include config.h
-
-2006-09-10 Shixin Zeng <shi...@sj...>
-
- * INSTALL.zh_CN: rename to INSTALL.zh_CN.UTF8 to indicate the encoding
- of the contents
-
-2006-09-10 Shixin Zeng <shi...@sj...>
-
- * INSTALL.zh_CN: Add problem shooting
- * configure.in: bump version of truan-xine and vod to 0.3.1 and 0.3.0
- respectively, warn user if USE_ICONV wasn't defined.
-
-2006-09-10 Shixin Zeng <shi...@sj...>
-
- * configure.in: detect the existance of "stddef.h"
-
-2006-09-08 Shixin Zeng <shi...@sj...>
-
- * more _WIN32 compilation cleanups
- * src/test/vod_test.c: include config.h
- * src/utils/vodutils.h: make @src const char *
- * src/utils/vodutils.c: ditto
- * src/include/platforms.h: more cross-platforms
- * src/lib/vod.c: use macro _WIN32 protectd closesocket instead of
- replace all close(x) with closesocket(x) literally, which may raise
- some problems.
-
-2006-09-05 Shixin Zeng <shi...@sj...>
-
- * _WIN32 compilation cleanups
- * src/lib/vod.c: (void *) was forced to convert to (char*) for add
- operation. correct socketclose() with closesocket()
- * src/lib/cache.h: change (this->data) from (void *) to (char *)
- * src/lib/cache.c: ditto, and some code-declation-mix cleanups
- * src/lib/vod_io_default_functions.c: correct socketclose() with
- closesocket(); rename WIN32 to _WIN32 and some other win32 compilation
- cleanups
- * src/test/url_test.c: include <string.h> for strcmp
- * src/utils/vodutils.c: correct LPWSPTR/LPSPTR with LPWSTR/LPSTR
- * src/include/platforms.h: typedef when compiled with MSC
-
-2006-09-02 Shixin Zeng <shi...@sj...>
-
- * configure.in: 0.3.0 released
- * src/lib/vod.c: (vod_seek), (vod_close), (vod_open_purl): revert
- MULTI_THREAD and reseek changes, which is not effective.
- * src/lib/vod.h: ditto
-
-2006-09-01 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (vod_seek), (vod_close), (vod_open_purl): implemented
- exclusive seeking at one time with mutex when MULTI_THREAD defined.
- * src/lib/vod.h: add a field mutex to vod_t, protected by the macro
- MULTI_THREAD
-
-2006-09-01 Shixin Zeng <shi...@sj...>
-
- * configure.in: 0.3.0rc2 released
- * src/lib/vod.c: (vod_seek): avoid reseek before seeking finished,
- though I don't know why it would be re-called before the previous
- seeking finished.
- * src/lib/cache.c: include "string.h" for memcpy
- * src/utils/vodutils.h: add function protypes for WIN32
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (vod_seek): don't seek if it is seeking.
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * src/utils/vodutils.c: (x_iconv), (from_locale), (to_locale): add
- WIN32 implementations. Not tested.
- * src/utils/vodutils.h: ditto
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * src/lib/cache.c: include "config.h"
- * src/test/vod_gnomevfs_test.c: ditto
- * src/lib/cache.h: remove include "config.h"
- * src/lib/vod.h: ditto
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * configure.in: detect sys/types.h and stdint.h; defined
- AM_CONDITIONALS WITH_FRONTEND_GNOME_VFS and WITH_FRONTEND_XINE_LIB.
- * src/include/misc.h: move DLL* macros to platforms.h
- * src/include/platforms.h: merge src/lib/defines.h to this file.
- * src/lib/defines.h: deleted
- * src/lib/vod.c: include "assert.h",
- (vod_cache_switch): use indirectly call to cache->free instead of
- cache_free().
- * src/frontends/xine-lib/input_vod.c: replace "sys/types.h" with
- platforms.h.
- * src/frontends/xine-lib/io_functions.h: ditto
- * src/lib/cache.h: ditto
- * src/lib/vod.h: remove "defines.h" and some unnessary includes.
- * src/lib/vod_io_default_functions.c: includes cleanups
- * src/lib/vod_io_default_functions.h: ditto
- * src/test/cache_test.c: ditto
- * src/test/url_test.c: ditto
- * src/test/vod_gnomevfs_test.c: ditto
- * src/test/vod_test.c: ditto
- * src/utils/url_parse.c: ditto
- * src/utils/vodutils.h: ditto
- * src/test/Makefile.am: build vod_gnome_vfs_test only when
- WITH_FRONTEND_GNOME_VFS enabled.
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * configure.in: 0.3.0rc1 released
-
-2006-08-29 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/Makefile.am: add io_functions.h for
- distribution.
- * src/lib/Makefile.am: add header files in ../include for
- distribution.
-
-2006-08-28 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (vod_seek): return immediatly if abs_pos ==
- this->curpos
-
-2006-08-28 Shixin Zeng <shi...@sj...>
-
- * src/lib/cache.c: documentation more
- (vod_cache_put): delete some dead code. comment more
- (vod_cache_get): comment more
-
-2006-08-28 Shixin Zeng <shi...@sj...>
-
- * src/lib/cache.c: (vod_cache_put): set cache->size when size >
- cache->capacity.
-
-2006-08-27 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open):
- * src/lib/cache.c: (cache_new), (vod_cache_free),
- (vod_cache_clear), (vod_cache_put), (vod_cache_get): insert a cache
- * src/lib/cache.h: ditto
- * src/lib/vod.c: (vod_read), (vod_seek), (vod_close),
- (vod_open_purl), (vod_cache_switch):
- ditto(#bug: http://sourceforge.net/tracker/index.php?func=detail&aid=1531185&group_id=117215&atid=677360)
- * src/lib/vod.h: ditto
- * src/test/Makefile.am: add cache_test.c
- * src/test/vod_test.c: (dump_url), (test_url), (main):
- * src/test/cache_test.c: New
-
-2006-08-26 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c:
- (log_to_file): close() should be fclose()
- * src/lib/Makefile.am: define _DEBUG when debug option specified when
- configure
-
-2006-08-26 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/io_functions.c:
- (vod_xine_lib_connection_destroy): fix the stupid bug, a ';' after
- 'return' is missing, which cause the connection is not closed.
- * src/lib/vod.c: (DPRINTF), (recv_response_until), (get_response),
- (prepare_request), (vod_open_at), (vod_read), (vod_seek),
- (vod_close), (vod_open): Add some debug info.
-
-2006-08-24 Shixin Zeng <shi...@sj...>
-
- * configure.in: Add --with-xine-plugindir option
-
-2006-07-30 Shixin Zeng <shi...@sj...>
-
- * Makefile.am: add rule to automatically update libtool
- * configure.in: modify CFLAGS instead of unset it.
- * src/frontends/xine-lib/Makefile.am: cleanups, move debug flags to
- the global CFLAGS
- * src/frontends/xine-lib/input_vod.c: (log_to_file): fix compilation
- errors.
-
-2006-07-30 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_dispose),
- (log_to_file), (vod_plugin_open), (vod_class_get_instance): Add a
- logfile pointer which is valid in the whole plugin lifetime. Use C
- library file operation functions instead of linux system call for
- cross-platform purpose.
-
-2006-07-26 Shixin Zeng <shi...@sj...>
-
- * docs/protocol: documents the protocol in more detail
-
-2006-07-26 Shixin Zeng <shi...@sj...>
-
- * INSTALL.zh_CN: Add instructions for sending binary plugins
- * configure.in: Ask the user to send the compiled plugin at the end of
- a successful configure.
-
-2006-07-26 Shixin Zeng <shi...@sj...>
-
- * configure.in: some cleanups
-
-2006-07-26 Shixin Zeng <shi...@sj...>
-
- * configure.in: correct --with detections
- * src/frontends/gnome-vfs/Makefile.am:
- * src/frontends/gnome-vfs/vod-gnomevfs.c: (do_open),
- (vfs_module_init): add some output for debug
- * src/test/Makefile.am:
- * src/test/url_test.c: (main): seperate urls into vod_url.dat
- * src/test/vod_test.c: (main): ditto
- * src/test/vod_gnomevfs_test.c: New, testing the gomevfs frontend
- * src/test/vod_url.dat: New, urls used for testing
-
-2006-07-25 Shixin Zeng <shi...@sj...>
-
- * INSTALL.zh_CN: Add bug reports instructions
- * README.x86_64: Feed CFLAGS to ./configure instead of make
-
-2006-07-25 Shixin Zeng <shi...@sj...>
-
- * configure.in: Fail configuration when xine-config wasn't found
-
-2006-07-17 Shixin Zeng <shi...@sj...>
-
- * make lib/vod more frontend-friendly
- * configure.in: bump to 0.3.0, fix a typo "bebug", add libtool version
- * src/Makefile.am: compile test conditionally
- * src/frontends/Makefile.am: compile frontends conditionally
- * src/frontends/xine-lib/Makefile.am: use libutils.a
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): use the new
- vod_open function, replace hardcoded bugreporter with BUGREPORTER,
- which is determined by configure.
- * src/frontends/gnome-vfs: a new gnome-vfs frontend(experimental)
- * src/frontends/gnome-vfs/gnome-vfs.h: New
- * src/frontends/gnome-vfs/gnome-vfs.c: New
- * src/lib/Makefile.am: generate a single archive of objects compiled with -fPIC.
- * src/lib/vod.h: remove unused url filed, replace fd with conn, add a
- new datatype vod_connection_t and initializers.
- * src/lib/vod_io_default_functions.c: ditto
- * src/lib/vod_io_default_functions.h: ditto
- * src/frontends/xine-lib/io_functions.c: (vod_xine_lib_connect),
- (vod_xine_lib_connect_finish), (vod_xine_lib_readall),
- (vod_xine_lib_writeall), (vod_xine_lib_connection_destroy): ditto
- * src/frontends/xine-lib/io_functions.h: ditto
- * src/lib/vod.c: (get_comment): replace this->fd with this->conn
- (recv_response_until): ditto
- (get_response): ditto
- (prepare_request): ditto
- (vod_read): ditto
- (vod_seek): ditto
- (vod_close): ditto and use connection_destory handler to close the
- connenction
- (get_localhost_ip): New
- (vod_open): add a new network handler connection_destroy
- (vod_open_purl): new
- (vod_open_at): wrap vod_open_purl
- * src/utils/Makefile.am: generate a single archive of objects compiled with -fPIC.
- * src/utils/url_parse.h: make strings const
- * src/utils/url_parse.c: (url_parse), (url_free): ditto
- (purl_to_string): new
- * src/test/Makefile.am: link against libvod.a libutils.a
- * src/test/url_test.c: (main): add test for purl_to_string
- * src/test/vod_test.c: (dump_url), (test_url): use new vod_open
- function
-
-2006-06-12 Shixin Zeng <shi...@sj...>
-
- * README: phase words in a more English way.
- * TODO: add a todo list
-
-2006-06-06 Shixin Zeng <shi...@sj...>
-
- valgrind --leak-check=full -v --show-reachable=yes reports no errors
- * configure.in: Add localtime_r to checking functions
- * src/lib/vod.c: (prepare_request): fix a stupid macro definition,
- which cause hostname is not initialized when HAVE_LOCALTIME_R is not
- defined
-
-2006-06-02 Shixin Zeng <shi...@sj...>
-
- * src/include/platforms.h: Added for misc platforms relative options
- * src/lib/vod.c: (PRINTF): use macro function instead of plain macro,
- fixed a stupid syntax error
- * src/utils/url_parse.c: include platforms.h
- * src/Makefile.am: Add include to INCLUDES
- * src/lib/Makefile.am: ditto
- * src/utils/Makefile.am: ditto
-
-2006-05-27 Shixin Zeng <shi...@sj...>
-
- * configure.in: bump to 0.2.1
- * autogen.sh: add svn:executable prop
-
-2006-05-27 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_read_block): compile
- with -Werror
- * src/frontends/xine-lib/io_functions.c: "vod.h" -> "lib/vod.h"
- * src/frontends/xine-lib/io_functions.h: Likewise
-
-2006-05-26 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (prepare_request): fix a stupid mistake: uptime when
- start.
-
-2006-05-26 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (get_response), , (vod_close),
- (vod_open): add datetime of the stream to request when possible
- (prepare_request): fill hostname with real hostname instead of MPLAYER.
- * src/lib/vod.h: add field to store datetime of the stream
- CHECK_FREE: make it NULL after free
-
-2006-05-25 Shixin Zeng <shi...@sj...>
-
- * src/test/uptime_test.c: Added to test the function uptime
- * src/test/Makefile.am: add -ggdb flags to compile test programs.
-
-2006-05-25 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.h: make tries a member of vod_t for thread-safe
- * src/lib/vod.c: (vod_open_at), (vod_open): Likewise
- * src/test/vod_test.c: (main): coding style correct
- * src/utils/Makefile.am: add uptime.[ch] to make requst match
- TruePlayer more precisely
- * src/Makefile.am: Likewise
- * src/utils/uptime.c: (uptime): uptime in microseconds
- * src/utils/uptime.h: Likewise
-
-2006-05-19 Shixin Zeng <shi...@sj...>
-
- * src/Makefile.am: Add missing header files
- * 0.2.0 released
-
-2006-05-19 Shixin Zeng <shi...@sj...>
-
- * configure.in: version bump
- * src/Makefile.am: revert "-m32" flags, use make CFLAGS instead
- * src/lib/Makefile.am: Likewise
- * src/test/Makefile.am: Likewise
- * src/lib/vod.c: (vod_open_at): make trires static, otherwise the
- recursion won't stop.
- * src/test/vod_test.c: (dump_url), (test_url), (main): cleanups.
- * README.x86_64: added for x86_64 installation instructions
-
-2006-05-19 Shixin Zeng <shi...@sj...>
-
- * xineplug_inp_vod.so: removed, as its version may confused me.
- * README: fill with something about libtruran version 0.2.0
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/Makefile.am: add io_helper.c as x86_64 workaround
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): correct
- __MY_DEBUG__ to MY_DEBUG
- * src/frontends/xine-lib/io_functions.c: add workaround for x86_64
- * src/frontends/xine-lib/io_helper.c: add workaround for x86_64
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c:
- (prepare_request): Added
- (vod_open_at): split request construction out of vod_open_at.
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c:
- (vod_plugin_open): move reconnect code to lib/vod.c
- * src/lib/vod.c:
- (vod_open_at), reconnect when the server is busy and RECONNECT
- defined.
- (vod_seek): reset vod->errcode when seek beyond filesize.
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c:
- (vod_plugin_seek): add charset converting for errmsg.
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c:
- (vod_plugin_read_block), off_t to ssize_t to shut up gcc
- (log_to_file): Added for write info to file
- (vod_plugin_open): log url to /tmp/xine-truran.url when DEBUG
- enabled
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (vod_open_at): add VOD_IO_WRITE_READY status
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/io_functions.c:
- (vod_xine_lib_connect_finish): Correct the return type to vod_io_status_t
- * src/frontends/xine-lib/io_functions.h: Likewise
- * src/lib/vod.h: Likewise
- * src/lib/vod_io_default_functions.c: Likewise
- * src/lib/vod_io_default_functions.h: Likewise
-
-2006-05-15 Shixin Zeng <shi...@sj...>
-
- * src/lib/vod.c: (vod_open): check if filepath is of 0 length.
-
-2006-05-14 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): fixed another
- bug when RECONNECT defined by adding a missing return 0
-
-2006-05-14 Shixin Zeng <shi...@sj...>
-
- * src/Makefile.am: Add "-m32" to force to produce 32-bit code
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open), make
- it compile when RECONNCET undefined
- (vod_class_get_instance): debug info cleanups
- * src/test/vod_test.c: (main): Add filedump codes to test reading.
-
-2006-05-14 Shixin Zeng <shi...@sj...>
-
- * configure.in: don't generate unused Makefiles
- * src/Makefile.am: Add INCLUDES,
-
-2006-05-13 Shixin Zeng <shi...@sj...>
-
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): fix a stupid
- bug when RECONNECT difined. break loop when successfully connected.
-
-2006-05-13 Shixin Zeng <shi...@sj...>
-
- * configure.in: prepare for 0.2.0
- * src/Makefile.am: split source into different directories
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_seek),
- (vod_plugin_dispose), (vod_plugin_open): seperate libtruran out of
- input_vod, so that it could be used by other apps and much easier to
- debug. Tested on AMD X86_64, basically works.
- * src/frontends/xine-lib/input_vod.c: (vod_plugin_open): charset
- converting, the return value must be free'ed
-
-2006-05-12 Shixin Zeng <shi...@sj...>
- * split libtruran out
- * vod.c vod.h: responding files
- * input_vod.c: modified to wrap libtruran
-
-2006-03-23 Shixin Zeng <shi...@sj...>
-
- * Makefile.am: make automake 1.5 or above is required
- * autogen.sh: added for autogen
- * prepare-ChangeLogSVN.pl: borrowed from openchrome
-
-2005-10-02 Shixin Zeng <shi...@sj...>
- * src/input_vod.c: write URL to /tmp/xine-truran.url for debug
-
-2005-07-28 Shixin Zeng <shi...@sj...>
-
- * 0.1.3 released: bug fixes
- * src/input_vod.c: Change the remote charset to GB18030 from GB2312,
- to fix character missing problems
- add setlocale() when the plugin init
-
-2005-06-09 Shixin Zeng <shi...@sj...>
-
- * src/input_vod.c: Add byteorder converting, not tested. Depending
- on the macro WORDS_ENDIAN, produced by AC_C_BIGENDIAN in autoconf
-
-2005-06-5 Shixin Zeng <shi...@sj...>
-
- * configure.in: add AM_CONFIG_HEADER(config.h) to generate config.h
-
-2005-05-14 Shixin Zeng <shi...@sj...>
-
- * vodutils.h, vodutils.c:add to_locale, from_locale, implemented
- by x_iconv
- * input_vod.c: some codes clean up
-
-2005-05-04 author <author@SJTU-SXZENG>
-
- * input_vod.c: 0.1.2 released
- URL related bugs fixes
-
-2005-05-04 Shixin Zeng <shi...@sj...>
- * 0.1.2 released: bug-fixes
- * input_vod.c: URL related bug fixes and other careless bug fixes
-
-2005-04-29 Shixin Zeng <shi...@sj...>
- * 0.1.1 released: compitable with xine-lib 1.0.1
- * input_vod.c: replace 15 with INPUT_PLUGIN_IFACE_VERSION,
- now this would work with both 1.0.0 and 1.0.1
-
-2005-03-08 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: move preview-fill code to vod_plugin_open_at to
- reduce the times of connection when seek.
- * Now it works!
-
-2005-03-07 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: changed strcpy to memcpy to get the right name
- restruct the m_response_t to get correct length
- * input_vod.c: use 2 viariabls of uint32_t to store the length/
- offset of the file
-
-2005-03-05 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: vod_class_get_instance: this->host =
- strdup(filename), because filename is a temp variable,
- we must duplicate it.
- * input_vod.c: replace unsigned int with uint32_t
-
- * input_cache.c: Fix crashing when get_optional_data is NULL
-
-2005-01-15 Shixin Zeng <shi...@sj...>
-
- * docs/protocol: Add the overview of the protocol
-
- * input_vod.c: Fix potential problem caused by such mrl(the port
- is omitted and refer to an absolute path instead of net path):
- mrl = vod://202.120.2.166/G:\vodroote\rm\韩国\浪漫满屋\01.rm
-
-2005-01-12 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: rewrite the function recv_response_until to deal
- with the situation that the blocksize is not large enough
-
-2005-01-10 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: change sprintf("%lld", start) to sprintf("%lu", start)
-
-2005-01-09 Shixin Zeng <shi...@sj...>
-
- * docs/protocol: Add this file
- * input_vod.c: revert to a working state
- * ChangeLog: Add this file
-
-2005-01-08 Shixin Zeng <shi...@sj...>
-
- * input_vod.c: An input plugin for libxine
- It get the media stream via TruRan procotol, and send it to libxine for playing
-
- * input_vod.c: New file.
-
Deleted: truran-xine/branches/fuse/Makefile.am
===================================================================
--- truran-xine/branches/fuse/Makefile.am 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/Makefile.am 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,68 +0,0 @@
-##
-## Process this file with automake to produce Makefile.in
-##
-
-AUTOMAKE_OPTIONS = 1.5
-
-ACLOCAL_AMFLAGS =
-
-SUBDIRS = src
-
-EXTRA_DIST = CREDITS \
- INSTALL.zh_CN.UTF8 \
- README.x86_64
-
-CONFIG_CLEAN_FILES = libtool-nofpic
-
-
-debug:
- @list='$(SUBDIRS)'; for subdir in $$list; do \
- (cd $$subdir && $(MAKE) $@) || exit;\
- done;
-
-
-install-debug: debug
- @list='$(SUBDIRS)'; for subdir in $$list; do \
- (cd $$subdir && $(MAKE) $@) || exit; \
- done;
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
-
-prune-cache:
- -rm -f config.cache
-
-
-release-check:
- @./config.status misc/relchk.sh
- @mv -f .cvsversion .cvsversion.tmp
- @./autogen.sh noconfig && $(SHELL) misc/relchk.sh
- @mv -f .cvsversion.tmp .cvsversion
-
-install-data-hook:
- @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*.la
- @rm -f $(DESTDIR)$(XINE_PLUGINDIR)/*/*.la
- @if test -x "$(top_srcdir)/post-install.sh" ; then \
- $(top_srcdir)/post-install.sh ; \
- fi
-
-
-mostlyclean-generic:
- -rm -f *~ \#* .*~ .\#*
- -rm -f $(PACKAGE)_$(VERSION).tar.gz
- -rm -f $(distdir).tar.gz $(PACKAGE).tgz package_descriptions
- -rm -rf $(distdir)
-
-
-maintainer-clean-generic:
- -@echo "This command is intended for maintainers to use;"
- -@echo "it deletes files that may require special tools to rebuild."
- -rm -f Makefile.in configure acinclude.m4 aclocal.m4
- -rm -f config.h.in stamp-h.in ltconfig ltmain.sh
- -rm -f config.guess config.sub install-sh missing mkinstalldirs
- -rm -f libtool-nofpic depcomp config.log
-
-maintainer-clean-generic-hook:
- rm -f config.status
-
-libtool:$(LIBTOOL_DEPS)
- $(SHELL) $(top_srcdir)/config.status --recheck
Deleted: truran-xine/branches/fuse/NEWS
===================================================================
Deleted: truran-xine/branches/fuse/acinclude.m4
===================================================================
--- truran-xine/branches/fuse/acinclude.m4 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/acinclude.m4 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,15 +0,0 @@
-AC_DEFUN([HAVE_GCCVISIBILITY],[
- visibility_cc=yes
- if test "X$CC" != "X"; then
- AC_MSG_CHECKING([whether ${CC} accepts -fvisibility=hidden])
- visibility_old_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -fvisibility=hidden"
- AC_TRY_COMPILE(,,, visibility_cc=no)
- echo $visibility_cc
- if test "X$visibility_cc" = "Xno"; then
- CFLAGS="$visibility_old_cflags"
- else
- AC_DEFINE([HAVE_GCCVISIBILITYPATCH], 1, [Define if your CC support -fvisibility=hidden])
- fi
- fi
-])
Deleted: truran-xine/branches/fuse/configure.in
===================================================================
--- truran-xine/branches/fuse/configure.in 2008-03-15 07:17:17 UTC (rev 431)
+++ truran-xine/branches/fuse/configure.in 2008-03-15 07:32:36 UTC (rev 432)
@@ -1,294 +0,0 @@
-# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.59)
-
-dnl ================================================================
-dnl the version for the plugin
-dnl ================================================================
-m4_define([truran_version_major], [0])
-m4_define([truran_version_minor], [3])
-m4_define([truran_version_macro], [2])
-
-dnl ================================================================
-dnl the version for the protocol
-dnl ================================================================
-m4_define([vod_version_major_m], [0])
-m4_define([vod_version_minor_m], [3])
-m4_define([vod_version_macro_m], [0])
-
-AC_INIT([truran-xine],
- truran_version_major_m.truran_version_minor_m.truran_version_macro_m,
- [shi...@sj...])
-AC_CONFIG_SRCDIR([src/lib/vod.c])
-
-AM_INIT_AUTOMAKE()
-AM_CONFIG_HEADER(config.h)
-
-VOD_VERSION_MAJOR=vod_version_major_m
-VOD_VERSION_MINOR=vod_version_minor_m
-VOD_VERSION_MACRO=vod_version_macro_m
-AC_CONFIG_COMMANDS([src/include/version.h],
-[ dest=src/include/version.h
- cat > $dest << _EOF
-/* Generated by configure. Do not edit */
-#ifndef VOD_VERSION_H
-#define VOD_VERSION_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "version.h"
-#include "misc.h"
-#include "platforms.h"
-
-#define VOD_VERSION_MAJOR $VOD_VERSION_MAJOR
-#define VOD_VERSION_MINOR $VOD_VERSION_MINOR
-#define VOD_VERSION_MACRO $VOD_VERSION_MACRO
-
-#define VOD_VERSION_STRING(MJ,MI, MA) #MJ "." #MI "." #MA
-
-BEGIN_DECLS
-
-DLLPUBLIC inline int
-vod_version_major();
-
-DLLPUBLIC inline int
-vod_version_minor();
-
-DLLPUBLIC inline int
-vod_version_macro();
-
-DLLPUBLIC inline int
-vod_version();
-
-/*
- *
- * return: a const string, must not be free'ed
- */
-DLLPUBLIC inline const char *
-vod_version_string();
-
-END_DECLS
-
-#endif
-_EOF
-],[
- VOD_VERSION_MAJOR=$VOD_VERSION_MAJOR
- VOD_VERSION_MINOR=$VOD_VERSION_MINOR
- VOD_VERSION_MACRO=$VOD_VERSION_MACRO
-])
-
-# Checks for programs.
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-AC_PROG_LIBTOOL
-AC_SUBST(LIBTOOL_DEPS)
-
-AC_C_INLINE
-
-AC_ARG_ENABLE(reconnect,,
- reconnect=yes,
- reconnect=no)
-if test x$reconnect = xyes; then
- AC_DEFINE(RECONNECT, 1, [Define to 1 to enable automatically reconnect when the server is full])
-fi
-
-AC_ARG_ENABLE(gcov,AC_HELP_STRING([--enable-gcov], [Instrument for gcov (requires a modern gcc @<:@default=no@:>@)]),,[enable_gcov=no])
-AM_CONDITIONAL(ENABLE_GCOV, test x$enable_gcov = xyes)
-
-AC_ARG_ENABLE(nbc,
- AS_HELP_STRING([--disable-nbc], [disable net_buffer_control. Disable it for Totem if you want seek by the middle button of the mouse, ATM]),
- [case "${enableval}" in
- yes) nbc="Yes"
- ;;
- no) nbc="No"
- ;;
- *) AC_MSG_ERROR(bad ...
[truncated message content] |
|
From: <ia...@us...> - 2008-03-15 07:17:27
|
Revision: 431
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=431&view=rev
Author: iacat
Date: 2008-03-15 00:17:17 -0700 (Sat, 15 Mar 2008)
Log Message:
-----------
fuse branch initialize
Modified Paths:
--------------
truran-xine/branches/fuse/AUTHORS
Added Paths:
-----------
truran-xine/branches/fuse/
Removed Paths:
-------------
truran-xine/branches/fuse/Doxyfile
truran-xine/branches/fuse/INSTALL.zh_CN.UTF8
truran-xine/branches/fuse/Makefile.common
truran-xine/branches/fuse/README
truran-xine/branches/fuse/README.x86_64
truran-xine/branches/fuse/TODO
truran-xine/branches/fuse/autogen.sh
truran-xine/branches/fuse/debian/
truran-xine/branches/fuse/ppa.py
truran-xine/branches/fuse/prepare-ChangeLogSVN.pl
truran-xine/branches/fuse/src/CMakeLists.txt
truran-xine/branches/fuse/src/frontends/
truran-xine/branches/fuse/src/lighttpd_mod_vod/
truran-xine/branches/fuse/src/version.h.cmake
truran-xine/branches/fuse/svnCommit.pl
Copied: truran-xine/branches/fuse (from rev 430, truran-xine/trunk)
Modified: truran-xine/branches/fuse/AUTHORS
===================================================================
--- truran-xine/trunk/AUTHORS 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/AUTHORS 2008-03-15 07:17:17 UTC (rev 431)
@@ -1 +1,2 @@
Shixin Zeng(shi...@sj...)
+Wang Kai(fe...@gm...)
Deleted: truran-xine/branches/fuse/Doxyfile
===================================================================
--- truran-xine/trunk/Doxyfile 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/Doxyfile 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,261 +0,0 @@
-# Doxyfile 1.4.7
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = truran-xine
-PROJECT_NUMBER = 0.3.0
-OUTPUT_DIRECTORY = docs
-CREATE_SUBDIRS = NO
-OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = YES
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = YES
-STRIP_FROM_PATH =
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = YES
-JAVADOC_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP = NO
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 6
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = YES
-OPTIMIZE_OUTPUT_JAVA = NO
-BUILTIN_STL_SUPPORT = NO
-DISTRIBUTE_GROUP_DOC = NO
-SUBGROUPING = YES
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = NO
-EXTRACT_STATIC = NO
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = NO
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = NO
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-SORT_BY_SCOPE_NAME = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_DIRECTORIES = NO
-FILE_VERSION_FILTER =
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = E:/temp/trunk/src
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.py
-RECURSIVE = YES
-EXCLUDE = */test/*
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS = *
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = YES
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = NO
-REFERENCES_LINK_SOURCE = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_ALIGN_MEMBERS = YES
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-BINARY_TOC = NO
-TOC_EXPAND = NO
-DISABLE_INDEX = NO
-ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = NO
-TREEVIEW_WIDTH = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = NO
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = YES
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = NO
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-XML_PROGRAMLISTING = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = YES
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = NO
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED = USE_ICONV
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-PERL_PATH = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = YES
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = YES
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-TEMPLATE_RELATIONS = NO
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = NO
-CALL_GRAPH = YES
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = NO
-DOT_IMAGE_FORMAT = png
-DOT_PATH =
-DOTFILE_DIRS =
-MAX_DOT_GRAPH_WIDTH = 1024
-MAX_DOT_GRAPH_HEIGHT = 1024
-MAX_DOT_GRAPH_DEPTH = 1000
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-SEARCHENGINE = YES
Deleted: truran-xine/branches/fuse/INSTALL.zh_CN.UTF8
===================================================================
--- truran-xine/trunk/INSTALL.zh_CN.UTF8 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/INSTALL.zh_CN.UTF8 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,90 +0,0 @@
-发信人: wishing (..), 信区: GNULinux
-标 题: 使用xine观看comic在线节目
-发信站: 饮水思源 (2005年05月04日21:35:28 星期三), 转信
-
-
- xine是一个功能强大的播放引擎,也就是一个后端,他有多种前端(GUI),例如
-xine-ui,totem,kaffeine等等之类的。我这里使用的是redflag-4.1自带的kaffeine
-,下面将以此为例,由于pupilzeng编写的truran-xine-0.1.2.tar.gz是一个xine-lib的
-插件,所以使用哪种前端是无所谓的。
-
-1, 首先下载truran-xine和comicview,在下面的URL上面有
- http://www.sourceforge.net/projects/mplayer-tru/
-
- 解开truran-xine直接./configure ; make; make install就可以
-他会生成一个xineplug_inp_vod.so库,然后自动装到/usr/lib/xine/plugins/1.0.0/下面
-去
-
-2, 然后安装comicview,你下载下来的是一个 .xpi 文件,直接打开你的firefox
-,然后 文件-->打开文件 选择你下载下来的 comicview-xxx.xpi 文件打开,就会
-提示你了,安装完成后,重新启动firefox就可以了
-
-3, 然后再次启动firefox后, 工具-->扩展 然后选择Comic Viewer双击,就可以
-看到 location of mplayer:
- location of totem:
- local charset(the same as your locale):
- the charset on vod server (GB2312 ..... ):
-
-分别根据你的情况填写,我的分别是
- /usr/bin/gmplayer
- /usr/bin/kaffeine
- GB18030
- GB2312
-
-后面的那个GB18030,你可以在终端里面使用 locale 命令,看到你的环境变量LC_CTYPE=
-我的机器上是
- LC_CTYPE=zh_CN.GB18030
-
- 这样应该就可以使用kaffeine来观看comic了,直接在网页上面右键
-选择view with totem
-
-4, 但是还有一个问题就是kaffeine不支持wmv9和rm编码,这个你可以在
-http://www.mplayerhq.hu/homepage/design7/dload.html 上面下载
-Mplayer的解码器,例如essential-xxxx.tar.bz,然后将他解开后,把里面
-的东西全部copy到/usr/lib/win32下面,这样应该可以看wmv9的了。然后把
-realplay的codec目录下面的解码器也都copy到/usr/lib/win32下面,就可以
-看comic上面的rm了,要注意的是你可能还是会碰到一些kaffeine打不开的rm文件
-这是由于xine对rm的支持不是非常好,这个mplayer也一样的,但是comic上面的
-我随便试了几个,还没问题
- 还有就是在kaffeine的配置文件/root/.kaffeine/config中写上
-codec.real_codecs_path:/usr/lib/win32
-就可以了,在kaffeine的图形界面里面,设置xine参数的地方,也可以设置路径
-
- 如果你的机器上面没有xine,那么当然要先装一个了,他的前端很多,可以
-自己选择,安装方法这里就不说了
-
- 最后感谢pupilzeng的 truran-xine 插件 , pigworlds 的 comicview 扩展
-还有 ILoveCacaca 的热情回文:)
---
-
-※ 修改:·wishing 于 05月04日22:48:22 修改本文·[FROM: 211.80.37.75]
-※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 211.80.37.75]
-
-常见问题解决
-1.
-"WARNING: USE_ICONV will not be defined. To solve this problem before doing anything else is highly recommended. Without this problem solved, if you're using comicview & truran-xine to watch TV, you should set "local charset" in comicview with "GB18030" dispite of whatever you locale charset is acctually."
-出现这个warning,是因为您的glibc中的nl_langinfo函数不支持nl_langinfo(CODESET) 或者您的系统上没有iconv库。如果是前者的话,比较难以解决(更新glibc?);如果是后者的话,安装libiconv就可以解决了。当然,这个问题不解决的话,也是可以正常播放truran的,只是在配合comicview时的设置有点不一样,这时的local charset必须设置为GB18030而不管您的实际local charset是什么,它带来的问题是,播放器中显示的标题可能会是乱码。
-2.
-*** The xine-config script installed by XINE could not be found
-*** If XINE was installed in PREFIX, make sure PREFIX/bin is in
-*** your path, or set the XINE_CONFIG environment variable to the
-*** full path to xine-config.
-checking for strsep... yes
-checking for strpbrk... yes
-checking for setenv... yes
-configure: error: "Configuration failed"
-您的系统上,要么没有安装libxine,要么没有安装libxine-dev,将它们安装上就可以解决了
-
-Bug reports (shi...@sj... 或者 http://sourceforge.net/tracker/?atid=677360&group_id=117215&func=browse)
-1.如果不能编译的话,把./configure和make的结果发给我。最好还带上config.log
-2.如果能够编译安装,却不能运行的话,那么请在控制台下运行
-$totem `cat /tmp/xine-truran.url` >xine-truran.log 2>&1
-然后把上面生成的文件xine-truran.log发给我。
-3.发送内容还应包括软件版本号,这些软件包括truran-xine,xine-lib,Linux Distribution.
-
-发送一份拷贝给作者
-为了使其他用户能更方便地使用这个插件,而避免编译的麻烦(很多人都会遇到libxine-dev没有安装的而不能编译过,可许多新手都不知道这一点)。请您将您编译好的xineplug_inp_vod.so发送到zeng.s...@gm...,标题请使用xineplug_inp_vod.so,并至少提供以下信息:
-1. truran-xine 的版本号,如truran-xine-0.2.0
-2. libxine-dev 的版本号,如libxine-dev-1.1.1
-3. OS, distribution版本号,如Ubuntu 6.0.6
-4. CPU类型,如i386, x86_64等。
Deleted: truran-xine/branches/fuse/Makefile.common
===================================================================
--- truran-xine/trunk/Makefile.common 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/Makefile.common 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,60 +0,0 @@
-LIBTOOL = $(SHELL) $(top_builddir)/libtool-nofpic
-XINE_LIB = $(top_builddir)/src/xine-engine/libxine.la
-
-$(XINE_LIB):
- @cd $(top_srcdir)/src/xine-engine && $(MAKE)
-
-install-data-hook:
- @if test $$MAKELEVEL -le 4 ; then \
- if test -x "$(top_srcdir)/post-install.sh" ; then \
- $(top_srcdir)/post-install.sh ; \
- fi \
- fi
-
-pass1:
- @$(MAKE) MULTIPASS_CFLAGS="$(PASS1_CFLAGS)"
-
-pass2:
- @$(MAKE) MULTIPASS_CFLAGS="$(PASS2_CFLAGS)"
-
-debug:
- @$(MAKE) CFLAGS="$(DEBUG_CFLAGS)"
-
-install-debug: debug
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
- @list='$(SUBDIRS)'; for subdir in $$list; do \
- (cd $$subdir && $(MAKE) $@) || exit; \
- done;
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-
-install-includeHEADERS: $(include_HEADERS)
- @$(NORMAL_INSTALL)
- $(install_sh) -d $(DESTDIR)$(includedir)/xine
- @list='$(include_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
- echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/xine/$$p"; \
- $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/xine/$$p; \
- done
-
-uninstall-includeHEADERS:
- @$(NORMAL_UNINSTALL)
- list='$(include_HEADERS)'; for p in $$list; do \
- rm -f $(DESTDIR)$(includedir)/xine/$$p; \
- done
-
-uninstall-hook:
- @if echo '$(libdir)' | egrep ^'$(XINE_PLUGINDIR)' >/dev/null; then \
- list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- p="`echo $$p | sed -e 's/\.la$$/\.so/g;s|^.*/||'`"; \
- echo " rm -f $(DESTDIR)$(libdir)/$$p"; \
- rm -f $(DESTDIR)$(libdir)/$$p; \
- done; \
- fi
-
-mostlyclean-generic:
- -rm -f *~ \#* .*~ .\#*
-
-maintainer-clean-generic:
- -@echo "This command is intended for maintainers to use;"
- -@echo "it deletes files that may require special tools to rebuild."
- -rm -f Makefile.in
Deleted: truran-xine/branches/fuse/README
===================================================================
--- truran-xine/trunk/README 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/README 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,36 +0,0 @@
-Libtruran is a C library of the Truran protocol for multimedia stream.
-
-The protocol was hacked by pigworlds initially. and this library is based on his patch for mplayer and his guidelines.
-
-This file is for version 0.2.0, for the protocol was splitted out of libtruran-xine since the version 0.2.0
-The library is consist of 3 components:
-1. A networking component
-2. A protocol operation component
-3. A frontend component for various uses(currently only a plugin for xine-lib was implemented).
-
-1. The networking component.
-As libtruran was designed to be as much flexible as possible, the networking component is splitted out and works as callbacks to serve component 2 (the protocol component). It must implement 4 functions:
-typedef ssize_t (*vod_connect_func_t)(const char *host, int port, void *other);
-Connect to host:port, return 0 when success and -1 when failed.
-The parameter @other was passed in by vod_open();
-For a nonblock socket, this function would return immediately. For a block socket, it won't return until connects or error occures.
-
-typedef vod_io_status_t (*vod_connect_finish_t)(int fd, int timeout, void *other);
-Try to determine if the connection succeeded.
-For a block socket, this function may do nothing.
-
-typedef ssize_t (*vod_readall_func_t)(int fd, void *buff, size_t len, void *other);
-Try to read @len bytes into buff from fd.
-Return the length (in bytes) of the data read or -1 when error occurred.
-If an integer less than @len but -1 returned, it indicates EOF reached or the peer closed the connection. You needn't call it again to read the rest of the data.
-
-typedef ssize_t (*vod_writeall_func_t)(int fd, void *buff, size_t len, void *other);
-Similar as vod_readall_func_t above.
-
-All of these functions have default implementations, which may be considerred as examples.
-
-2. The protocol component.
-See comments in the header/source files.
-
-3. The frontend component.
-See the example in frontend/xine-lib or the test program in test/vod_test.c
Deleted: truran-xine/branches/fuse/README.x86_64
===================================================================
--- truran-xine/trunk/README.x86_64 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/README.x86_64 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,5 +0,0 @@
-As win32codecs is required to play real format files, it is recommended that compile xine-lib with "-m32" CFLAGS. Otherwise, win32codecs can't be loaded.
-If you compile xine-lib in "-m32" mode, you must compile this plugin with:
-$configure CFLAGS="-m32"
-instead of pure
-$configure
Deleted: truran-xine/branches/fuse/TODO
===================================================================
--- truran-xine/trunk/TODO 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/TODO 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,3 +0,0 @@
-* fix any bug discovered
-* complete the frontends gnome-vfs and gstreamer
-* Collect more reply from the server to figure out other fields of struct respons_t
Deleted: truran-xine/branches/fuse/autogen.sh
===================================================================
--- truran-xine/trunk/autogen.sh 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/autogen.sh 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,2 +0,0 @@
-#!/bin/sh
-autoreconf -v -i -W gnu -f
Deleted: truran-xine/branches/fuse/ppa.py
===================================================================
--- truran-xine/trunk/ppa.py 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/ppa.py 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-
-argc = len(sys.argv)
-if argc != 2:
- print "ERROR: Wrong invokation\n"
- print "Usage: %s original_tarball" % sys.argv[0]
- sys.exit(1)
-
-orig = os.path.dirname(
- os.path.abspath(
- os.path.expanduser(sys.argv[1])))
-
-deb_dir = os.path.dirname(
- os.path.abspath(
- os.path.expanduser(sys.argv[0]))) + "/debian"
-
-pkname, tar, gz = orig.split('.')
-if tar != 'tar' or gz != 'gz':
- print "ERROR: the specified origin file should be of .tar.gz type"
- sys.exit(1)
-
-
-dists = ("dapper", "edgy", "feisty", "gutsy", "hardy")
-
-os.system('tar zxf %s -C /tmp' % orig)
-
-for dist in dists:
- os.chdir('/tmp')
- pk_dist_orign = '%s-%s-orign' % (pkname, dist)
- os.shutil.copytree(pkname, pk_dist_orign)
- os.shutil.copytree(deb_dir, '/tmp/' + pkname)
- #generate changelog for the
- os.chdir("%s" % '/tmp/' + pkname + 'debian')
- os.system('sed "s/DISTRIBUTION/%s/g" %s/changelog > /tmp/%s/debian/changelog' % (dist, deb_dir, pkname))
- os.chdir("../")
- os.system('gpg -S -a')
- os.system('dput ../*.changes')
- os.unlink('../*.changes')
- os.unlink('../%s.tar.gz' % pk_dist_orign)
- os.shutil.rmtree('/tmp/%s/debian' % pkname)
-
-os.shutil.rmtree('/tmp/' + pkname)
Deleted: truran-xine/branches/fuse/prepare-ChangeLogSVN.pl
===================================================================
--- truran-xine/trunk/prepare-ChangeLogSVN.pl 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/prepare-ChangeLogSVN.pl 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,603 +0,0 @@
-#!/usr/bin/perl -w
-# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-
-# Perl script to create a ChangeLog entry with names of files
-# and functions from a svn diff.
-#
-# Darin Adler <da...@be...>, started 20 April 2000
-# Java support added by Maciej Stachowiak <mj...@ea...>
-# Adapted for subversion by Thomas Hellstrom <unichrome-at-shipmail-dot-org>
-# last updated 11 May 2005
-#
-# (Someone put a license in here, like maybe GPL.)
-#
-# TODO:
-# For new files, just say "New file" instead of listing
-# function names.
-# List functions that have been removed too.
-# Decide what a good logical order is for the changed files
-# other than a normal text "sort" (top level first?)
-# (group directories?) (.h before .c?)
-# Leave a diff file behind if asked, but in unified format.
-# Handle C++ and yacc source files too (other languages?).
-# Help merge when there are ChangeLog conflicts or if there's
-# already a partly written ChangeLog entry.
-# Add command line option to put the ChangeLog into a separate
-# file or just spew it out stdout.
-# Figure out how to allow -z options from .cvsrc to work without
-# letting other bad options work. Currently the -f disables
-# everything from the .cvsrc.
-# Add CVS version numbers for each file too (can't do that until
-# the changes are checked in, though).
-# Work around diff stupidity where deleting a function that starts
-# with a comment makes diff think that the following function
-# has been changed (if the following function starts with a comment
-# with the same first line, such as /**)
-# Work around diff stupidity where deleting an entire function and
-# the blank lines before it makes diff think you've changed the
-# previous function.
-
-use diagnostics;
-use strict;
-
-use English;
-use Text::Wrap;
-
-# For each file, build a list of modified lines.
-# Use line numbers from the "after" side of each diff.
-print STDERR " Running svn diff to find changes.\n";
-my %changed_line_ranges;
-my $file;
-open DIFF, "svn diff --diff-cmd diff -x -N |" or die "The svn diff failed: $OS_ERROR.\n";
-while (<DIFF>)
- {
- $file = $1 if /^Index: (\S+)$/;
- if (defined $file
- and $file ne "ChangeLog"
- and (/^\d+(,\d+)?[acd](\d+)(,(\d+))?/ or /^Binary files/) )
- {
- push @{$changed_line_ranges{$file}}, [ $2, $4 || $2 ];
- }
- }
-close DIFF;
-if (!%changed_line_ranges)
- {
- print STDERR " No changes found.\n";
- exit;
- }
-
-# For each ".c" file, convert line range to function list.
-print STDERR " Extracting affected function names from C source files.\n";
-my %function_lists;
-foreach my $file (keys %changed_line_ranges)
- {
- # An empty function list still indicates that something changed.
- $function_lists{$file} = "";
-
- # Only look for function names in .c files.
- next unless $file =~ /\.(c|java)/;
-
- # Find all the functions in the file.
- open SOURCE, $file or next;
- my @function_ranges = get_function_line_ranges(\*SOURCE, $file);
- close SOURCE;
-
- # Find all the modified functions.
- my @functions;
- my %saw_function;
- my @change_ranges = (@{$changed_line_ranges{$file}}, []);
- my @change_range = (0, 0);
- FUNCTION: foreach my $function_range_ref (@function_ranges)
- {
- my @function_range = @$function_range_ref;
-
- # Advance to successive change ranges.
- for (;; @change_range = @{shift @change_ranges})
- {
- last FUNCTION unless @change_range;
-
- # If past this function, move on to the next one.
- next FUNCTION if $change_range[0] > $function_range[1];
-
- # If an overlap with this function range, record the function name.
- if ($change_range[1] >= $function_range[0]
- and $change_range[0] <= $function_range[1])
- {
- if (!$saw_function{$function_range[2]})
- {
- $saw_function{$function_range[2]} = 1;
- push @functions, $function_range[2];
- }
- next FUNCTION;
- }
- }
- }
-
- # Format the list of functions now.
- $function_lists{$file} = " (" . join("), (", @functions) . "):" if @functions;
- }
-
-# Get some pieces of the ChangeLog we are about to write.
-my $date = sprintf "%d-%02d-%02d",
- 1900 + (localtime $BASETIME)[5], # year
- 1 + (localtime $BASETIME)[4], # month
- (localtime $BASETIME)[3]; # day within month
-my $name = $ENV{CHANGE_LOG_NAME}
- || $ENV{REAL_NAME}
- || (getpwuid $REAL_USER_ID)[6]
- || "set REAL_NAME environment variable";
-my $email_address = $ENV{CHANGE_LOG_EMAIL_ADDRESS}
- || $ENV{EMAIL_ADDRESS}
- || "set EMAIL_ADDRESS environment variable";
-
-# Find the change logs.
-my %has_log;
-my %files;
-foreach my $file (sort keys %function_lists)
- {
- my $prefix = $file;
- my $has_log = 0;
- while ($prefix)
- {
- $prefix =~ s-/[^/]+/?$-/- or $prefix = "";
- $has_log = $has_log{$prefix};
- if (!defined $has_log)
- {
- $has_log = -f "${prefix}ChangeLog";
- $has_log{$prefix} = $has_log;
- }
- last if $has_log;
- }
- if (!$has_log)
- {
- print STDERR "No ChangeLog found for $file.\n";
- }
- else
- {
- push @{$files{$prefix}}, $file;
- }
- }
-
-# Get the latest ChangeLog files from svn.
-my $logs = "";
-foreach my $prefix (sort keys %files)
- {
- $logs .= " ${prefix}ChangeLog";
- }
-if ($logs)
- {
- print STDERR " Updating ChangeLog files from svn repository.\n";
- open ERRORS, "svn update$logs |" or die "The svn update of ChangeLog files failed: $OS_ERROR.\n";
- print STDERR " $ARG" while <ERRORS>;
- close ERRORS;
- }
-
-
-# Write out a new ChangeLog file.
-foreach my $prefix (sort keys %files)
- {
- print STDERR " Editing the ${prefix}ChangeLog file.\n";
- open OLD_CHANGE_LOG, "${prefix}ChangeLog" or die "Could not open ${prefix}ChangeLog file: $OS_ERROR.\n";
- # It's less efficient to read the whole thing into memory than it would be
- # to read it while we prepend to it later, but I like doing this part first.
- my @old_change_log = <OLD_CHANGE_LOG>;
- close OLD_CHANGE_LOG;
- open CHANGE_LOG, "> ${prefix}ChangeLog" or die "Could not write ${prefix}ChangeLog\n.";
- print CHANGE_LOG "$date $name <$email_address>\n\n";
- print CHANGE_LOG "\treviewed by: <delete if not using a buddy>\n\n";
- foreach my $file (sort @{$files{$prefix}})
- {
- my $file_stem = substr $file, length $prefix;
- my $lines = wrap("\t", "\t", "XX$file_stem:$function_lists{$file}");
- $lines =~ s/^\tXX/\t* /;
- print CHANGE_LOG "$lines\n";
- }
- print CHANGE_LOG "\n", @old_change_log;
- close CHANGE_LOG;
- print STDERR " Done editing ${prefix}ChangeLog.\n";
- }
-
-# Done.
-exit;
-
-sub get_function_line_ranges
- {
- my ($file_handle, $file_name) = @_;
-
- if ($file_name =~ /\.c$/) {
- return get_function_line_ranges_for_c ($file_handle, $file_name);
- } elsif ($file_name =~ /\.java$/) {
- return get_function_line_ranges_for_java ($file_handle, $file_name);
- }
- return ();
- }
-
-# Read a file and get all the line ranges of the things that look like C functions.
-# A function name is the last word before an open parenthesis before the outer
-# level open brace. A function starts at the first character after the last close
-# brace or semicolon before the function name and ends at the close brace.
-# Comment handling is simple-minded but will work for all but pathological cases.
-#
-# Result is a list of triples: [ start_line, end_line, function_name ].
-
-sub get_function_line_ranges_for_c
- {
- my ($file_handle, $file_name) = @_;
-
- my @ranges;
-
- my $in_comment = 0;
- my $in_macro = 0;
- my $in_parentheses = 0;
- my $in_braces = 0;
-
- my $word = "";
-
- my $potential_start = 0;
- my $potential_name = "";
-
- my $start = 0;
- my $name = "";
-
- while (<$file_handle>)
- {
- # Handle continued multi-line comment.
- if ($in_comment)
- {
- next unless s-.*\*/--;
- $in_comment = 0;
- }
-
- # Handle continued macro.
- if ($in_macro)
- {
- $in_macro = 0 unless /\\$/;
- next;
- }
-
- # Handle start of macro (or any preprocessor directive).
- if (/^\s*\#/)
- {
- $in_macro = 1 if /^([^\\]|\\.)*\\$/;
- next;
- }
-
- # Handle comments and quoted text.
- while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
- {
- my $match = $1;
- if ($match eq "/*")
- {
- if (!s-/\*.*?\*/--)
- {
- s-/\*.*--;
- $in_comment = 1;
- }
- }
- elsif ($match eq "//")
- {
- s-//.*--;
- }
- else # ' or "
- {
- if (!s-$match([^\\]|\\.)*?$match--)
- {
- warn "mismatched quotes at line $INPUT_LINE_NUMBER in $file_name\n";
- s-$match.*--;
- }
- }
- }
-
- # Find function names.
- while (m-(\w+|[(){};])-g)
- {
- # Open parenthesis.
- if ($1 eq "(")
- {
- $potential_name = $word unless $in_parentheses;
- $in_parentheses++;
- next;
- }
-
- # Close parenthesis.
- if ($1 eq ")")
- {
- $in_parentheses--;
- next;
- }
-
- # Open brace.
- if ($1 eq "{")
- {
- # Promote potiential name to real function name at the
- # start of the outer level set of braces (function body?).
- if (!$in_braces and $potential_start)
- {
- $start = $potential_start;
- $name = $potential_name;
- }
-
- $in_braces++;
- next;
- }
-
- # Close brace.
- if ($1 eq "}")
- {
- $in_braces--;
-
- # End of an outer level set of braces.
- # This could be a function body.
- if (!$in_braces and $name)
- {
- push @ranges, [ $start, $INPUT_LINE_NUMBER, $name ];
- $name = "";
- }
-
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- # Semicolon.
- if ($1 eq ";")
- {
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- # Word.
- $word = $1;
- if (!$in_parentheses)
- {
- $potential_start = 0;
- $potential_name = "";
- }
- if (!$potential_start)
- {
- $potential_start = $INPUT_LINE_NUMBER;
- $potential_name = "";
- }
- }
- }
-
- warn "mismatched braces in $file_name\n" if $in_braces;
- warn "mismatched parentheses in $file_name\n" if $in_parentheses;
-
- return @ranges;
- }
-
-
-
-# Read a file and get all the line ranges of the things that look like Java
-# classes, interfaces and methods.
-#
-# A class or interface name is the word that immediately follows
-# `class' or `interface' when followed by an open curly brace and not
-# a semicolon. It can appear at the top level, or inside another class
-# or interface block, but not inside a function block
-#
-# A class or interface starts at the first character after the first close
-# brace or after the function name and ends at the close brace.
-#
-# A function name is the last word before an open parenthesis before
-# an open brace rather than a semicolon. It can appear at top level or
-# inside a class or interface block, but not inside a function block.
-#
-# A function starts at the first character after the first close
-# brace or after the function name and ends at the close brace.
-#
-# Comment handling is simple-minded but will work for all but pathological cases.
-#
-# Result is a list of triples: [ start_line, end_line, function_name ].
-
-sub get_function_line_ranges_for_java
- {
- my ($file_handle, $file_name) = @_;
-
- my @current_scopes;
-
- my @ranges;
-
- my $in_comment = 0;
- my $in_macro = 0;
- my $in_parentheses = 0;
- my $in_braces = 0;
- my $in_non_block_braces = 0;
- my $class_or_interface_just_seen = 0;
-
- my $word = "";
-
- my $potential_start = 0;
- my $potential_name = "";
- my $potential_name_is_class_or_interface = 0;
-
- my $start = 0;
- my $name = "";
- my $current_name_is_class_or_interface = 0;
-
- while (<$file_handle>)
- {
- # Handle continued multi-line comment.
- if ($in_comment)
- {
- next unless s-.*\*/--;
- $in_comment = 0;
- }
-
- # Handle continued macro.
- if ($in_macro)
- {
- $in_macro = 0 unless /\\$/;
- next;
- }
-
- # Handle start of macro (or any preprocessor directive).
- if (/^\s*\#/)
- {
- $in_macro = 1 if /^([^\\]|\\.)*\\$/;
- next;
- }
-
- # Handle comments and quoted text.
- while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
- {
- my $match = $1;
- if ($match eq "/*")
- {
- if (!s-/\*.*?\*/--)
- {
- s-/\*.*--;
- $in_comment = 1;
- }
- }
- elsif ($match eq "//")
- {
- s-//.*--;
- }
- else # ' or "
- {
- if (!s-$match([^\\]|\\.)*?$match--)
- {
- warn "mismatched quotes at line $INPUT_LINE_NUMBER in $file_name\n";
- s-$match.*--;
- }
- }
- }
-
- # Find function names.
- while (m-(\w+|[(){};])-g)
- {
- # Open parenthesis.
- if ($1 eq "(")
- {
- if (!$in_parentheses) {
- $potential_name = $word;
- $potential_name_is_class_or_interface = 0;
- }
- $in_parentheses++;
- next;
- }
-
- # Close parenthesis.
- if ($1 eq ")")
- {
- $in_parentheses--;
- next;
- }
-
- # Open brace.
- if ($1 eq "{")
- {
- # Promote potiential name to real function name at the
- # start of the outer level set of braces (function/class/interface body?).
- if (!$in_non_block_braces
- and (!$in_braces or $current_name_is_class_or_interface)
- and $potential_start)
- {
- if ($name)
- {
- push @ranges, [ $start, ($INPUT_LINE_NUMBER - 1),
- join ('.', @current_scopes) ];
- }
-
-
- $current_name_is_class_or_interface = $potential_name_is_class_or_interface;
-
- $start = $potential_start;
- $name = $potential_name;
-
- push (@current_scopes, $name);
- } else {
- $in_non_block_braces++;
- }
-
- $potential_name = "";
- $potential_start = 0;
-
- $in_braces++;
- next;
- }
-
- # Close brace.
- if ($1 eq "}")
- {
- $in_braces--;
-
- # End of an outer level set of braces.
- # This could be a function body.
- if (!$in_non_block_braces)
- {
- if ($name)
- {
- push @ranges, [ $start, $INPUT_LINE_NUMBER,
- join ('.', @current_scopes) ];
-
- pop (@current_scopes);
-
- if (@current_scopes)
- {
- $current_name_is_class_or_interface = 1;
-
- $start = $INPUT_LINE_NUMBER + 1;
- $name = $current_scopes[$#current_scopes-1];
- }
- else
- {
- $current_name_is_class_or_interface = 0;
- $start = 0;
- $name = "";
- }
- }
- }
- else
- {
- $in_non_block_braces-- if $in_non_block_braces;
- }
-
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- # Semicolon.
- if ($1 eq ";")
- {
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- if ($1 eq "class" or $1 eq "interface")
- {
- $class_or_interface_just_seen = 1;
- next;
- }
-
- # Word.
- $word = $1;
- if (!$in_parentheses)
- {
- if ($class_or_interface_just_seen) {
- $potential_name = $word;
- $potential_start = $INPUT_LINE_NUMBER;
- $class_or_interface_just_seen = 0;
- $potential_name_is_class_or_interface = 1;
- next;
- }
- }
- if (!$potential_start)
- {
- $potential_start = $INPUT_LINE_NUMBER;
- $potential_name = "";
- }
- $class_or_interface_just_seen = 0;
- }
- }
-
- warn "mismatched braces in $file_name\n" if $in_braces;
- warn "mismatched parentheses in $file_name\n" if $in_parentheses;
-
- return @ranges;
- }
Deleted: truran-xine/branches/fuse/src/CMakeLists.txt
===================================================================
--- truran-xine/trunk/src/CMakeLists.txt 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/src/CMakeLists.txt 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,52 +0,0 @@
-PROJECT(TRURAN C)
-SET(VERSION_MAJOR 0 CACHE INTERNAL "major version")
-SET(VERSION_MINOR 3 CACHE INTERNAL "minor version")
-SET(VERSION_MACRO 1 CACHE INTERNAL "macro version")
-SET(package_bugreport "\"shi...@sj...\"" CACHE INTERNAL "bugreport")
-
-CONFIGURE_FILE(${TRURAN_SOURCE_DIR}/version.h.cmake ${TRURAN_BINARY_DIR}/include/version.h)
-
-SUBDIRS(utils lib frontends)
-OPTION(RECONNECT "Reconnect automatically when the server is busy" 0)
-OPTION(GNOME-VFS "build gnomevfs frontend" 0)
-OPTION(XINE-LIB "build xine-lib frontend" 1)
-OPTION(BUILD-TEST "build test apps" 0)
-INCLUDE (CheckIncludeFiles)
-CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
-CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)
-CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
-CHECK_INCLUDE_FILES("sys/times.h" HAVE_SYS_TIMES_H)
-CHECK_INCLUDE_FILES("sys/socket.h" HAVE_SYS_SOCKET_H)
-CHECK_INCLUDE_FILES("netinet/in.h" HAVE_NETINET_IN_H)
-CHECK_INCLUDE_FILES("arpa/in.h" HAVE_ARPA_IN_H)
-CHECK_INCLUDE_FILES("netdb.h" HAVE_NETDB_H)
-CHECK_INCLUDE_FILES("fcntl.h" HAVE_FCNTL_H)
-CHECK_INCLUDE_FILES("stdint.h" HAVE_STDINT_H)
-CHECK_INCLUDE_FILES("stddef.h" HAVE_STDDEF_H)
-INCLUDE(CheckFunctionExists)
-CHECK_FUNCTION_EXISTS(localtime_r HAVE_LOCALETIME_R)
-INCLUDE(CheckTypeSize)
-CHECK_TYPE_SIZE(int SIZEOF_INT)
-CHECK_TYPE_SIZE(short SIZEOF_SHORT)
-CHECK_TYPE_SIZE(long SIZEOF_LONG)
-CHECK_TYPE_SIZE(off_t SIZEOF_OFF_T)
-CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T)
-CHECK_TYPE_SIZE(ssize_t SIZEOF_SSIZE_T)
-CHECK_TYPE_SIZE(uint32_t SIZEOF_UINT32_T)
-CHECK_TYPE_SIZE(int32_t SIZEOF_INT32_T)
-CHECK_TYPE_SIZE(socklen_t SIZEOF_SOCKLEN_T)
-
-INCLUDE(TestBigEndian)
-TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
-
-INCLUDE(TestCXXAcceptsFlag)
-CHECK_CXX_ACCEPTS_FLAG(-fvisibility=hidden HAVE_GCCVISIBILITYPATH)
-
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
-ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-IF(WIN32)
- ADD_DEFINITIONS(-D_WIN32)
-ENDIF(WIN32)
-if(BUILD-TEST)
- ADD_SUBDIRECTORY(test)
-ENDIF(BUILD-TEST)
Deleted: truran-xine/branches/fuse/src/version.h.cmake
===================================================================
--- truran-xine/trunk/src/version.h.cmake 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/src/version.h.cmake 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,8 +0,0 @@
-#ifndef VOD_VERSION_H
-#define VOD_VERSION_H
-
-#define VOD_VERSION_MAJOR @VERSION_MAJOR@
-#define VOD_VERSION_MINOR @VERSION_MINOR@
-#define VOD_VERSION_MACRO @VERSION_MACRO@
-
-#endif
Deleted: truran-xine/branches/fuse/svnCommit.pl
===================================================================
--- truran-xine/trunk/svnCommit.pl 2008-02-24 08:45:13 UTC (rev 430)
+++ truran-xine/branches/fuse/svnCommit.pl 2008-03-15 07:17:17 UTC (rev 431)
@@ -1,50 +0,0 @@
-#!/usr/bin/env perl
-
-#Copyright (C) 2006 Shixin Zeng(shi...@sj...)
-#
-#This file is part of libtruran, a C library for truran protocol
-#
-#libtruran is free software; you can redistribute it and/or modify
-#it under the terms of the GNU General Public License as published by
-#the Free Software Foundation; either version 2 of the License, or
-#(at your option) any later version.
-#
-#libtruran is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#GNU General Public License for more details.
-#
-#You should have received a copy of the GNU General Public License
-#along with this program; if not, write to the Free Software
-#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-#
-#$Id$
-#
-
-$staus = 0;
-@lines = ();
-$answer = "No";
-open CHANGE, "<ChangeLog" or die("Can't open Change log due to $OS_ERROR");
-while(<CHANGE>){
- if(/\d{4}-\d{2}-\d{2}/){
- $status = 1, next if($status == 0);
- $status = 0;
- last;
- }
- push(@lines, $_);
-}
-close CHANGE;
-s/^\s+// foreach(@lines);
-print "Will commit with log:\n\n";
-print foreach(@lines);
-print "\nAre you sure? <Yes | No>\n";
-$answer = <>;
-chomp($answer);
-$answer = uc $answer;
-print "Aborted\n" and exit 1 if("YES" !~ /^$answer/);
-open MSG, ">commit.tmp" or die("Can't open commit.tmp for writing due to $OS_ERROR");
-print MSG $_ foreach(@lines);
-close(MSG);
-print "To commit\n";
-`svn ci -F commit.tmp`;
-`rm -f commit.tmp`;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ia...@us...> - 2008-02-24 08:45:18
|
Revision: 430
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=430&view=rev
Author: iacat
Date: 2008-02-24 00:45:13 -0800 (Sun, 24 Feb 2008)
Log Message:
-----------
Added Paths:
-----------
truran-xine/trunk/src/lighttpd_mod_vod/
truran-xine/trunk/src/lighttpd_mod_vod/mod_vod.c
Added: truran-xine/trunk/src/lighttpd_mod_vod/mod_vod.c
===================================================================
--- truran-xine/trunk/src/lighttpd_mod_vod/mod_vod.c (rev 0)
+++ truran-xine/trunk/src/lighttpd_mod_vod/mod_vod.c 2008-02-24 08:45:13 UTC (rev 430)
@@ -0,0 +1,259 @@
+#include <ctype.h>:
+#include <stdlib.h>
+#include <string.h>
+
+#include "base.h"
+#include "log.h"
+#include "buffer.h"
+
+#include "plugin.h"
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/**
+ * this is a vod streaming protocol for a lighttpd plugin
+ *
+ * just replaces every occurance of 'vod' by your plugin name
+ *
+ * e.g. in vim:
+ *
+ * :%s/vod/myhandler/
+ *
+ */
+
+
+
+/* plugin config for all request/connections */
+
+typedef struct {
+ array *match;
+} plugin_config;
+
+typedef struct {
+ PLUGIN_DATA;
+
+ buffer *match_buf;
+ long filesize;
+ buffer *time_buf;
+
+ plugin_config **config_storage;
+
+ plugin_config conf;
+} plugin_data;
+
+typedef struct {
+ size_t foo;
+} handler_ctx;
+
+static handler_ctx * handler_ctx_init() {
+ handler_ctx * hctx;
+
+ hctx = calloc(1, sizeof(*hctx));
+
+ return hctx;
+}
+
+static void handler_ctx_free(handler_ctx *hctx) {
+
+ free(hctx);
+}
+
+/* init the plugin data */
+INIT_FUNC(mod_vod_init) {
+ plugin_data *p;
+
+ p = calloc(1, sizeof(*p));
+
+ p->match_buf = buffer_init();
+
+ return p;
+}
+
+/* detroy the plugin data */
+FREE_FUNC(mod_vod_free) {
+ plugin_data *p = p_d;
+
+ UNUSED(srv);
+
+ if (!p) return HANDLER_GO_ON;
+
+ if (p->config_storage) {
+ size_t i;
+
+ for (i = 0; i < srv->config_context->used; i++) {
+ plugin_config *s = p->config_storage[i];
+
+ if (!s) continue;
+
+ array_free(s->match);
+
+ free(s);
+ }
+ free(p->config_storage);
+ }
+
+ buffer_free(p->match_buf);
+
+ free(p);
+
+ return HANDLER_GO_ON;
+}
+
+/* handle plugin config and check values */
+
+SETDEFAULTS_FUNC(mod_vod_set_defaults) {
+ plugin_data *p = p_d;
+ size_t i = 0;
+
+ config_values_t cv[] = {
+ { "vod.array", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION }, /* 0 */
+ { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
+ };
+
+ if (!p) return HANDLER_ERROR;
+
+ p->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *));
+
+ for (i = 0; i < srv->config_context->used; i++) {
+ plugin_config *s;
+
+ s = calloc(1, sizeof(plugin_config));
+ s->match = array_init();
+
+ cv[0].destination = s->match;
+
+ p->config_storage[i] = s;
+
+ if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) {
+ return HANDLER_ERROR;
+ }
+ }
+
+ return HANDLER_GO_ON;
+}
+
+static int mod_vod_patch_connection(server *srv, connection *con, plugin_data *p) {
+ size_t i, j;
+ plugin_config *s = p->config_storage[0];
+
+ PATCH_OPTION(match);
+
+ /* skip the first, the global context */
+ for (i = 1; i < srv->config_context->used; i++) {
+ data_config *dc = (data_config *)srv->config_context->data[i];
+ s = p->config_storage[i];
+
+ /* condition didn't match */
+ if (!config_check_cond(srv, con, dc)) continue;
+
+ /* merge config */
+ for (j = 0; j < dc->value->used; j++) {
+ data_unset *du = dc->value->data[j];
+
+ if (buffer_is_equal_string(du->key, CONST_STR_LEN("vod.array"))) {
+ PATCH_OPTION(match);
+ }
+ }
+ }
+
+ return 0;
+}
+
+URIHANDLER_FUNC(mod_vod_uri_handler) {
+ plugin_data *p = p_d;
+ data_string *ds_fil, *ds_spl, *ds_sph, *ds_fpt, *ds_stt, *ds_ugt;
+ int p_len;
+ size_t k, i;
+
+ TRACE("vod handling request1 %d %s", con->http_req->headers->used, BUF_STR(con->http_req->headers->data[13]->key));
+ UNUSED(srv);
+
+ if((NULL == (ds_ugt = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("UGT")))) || !buffer_is_equal_string(ds_ugt->value, CONST_STR_LEN("XMPLAYER")))
+ return HANDLER_GO_ON;
+
+ mod_vod_patch_connection(srv, con, p);
+
+ ds_fil = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("FIL"));
+ ds_spl = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("SPL"));
+ ds_sph = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("SPH"));
+ ds_fpt = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("FIL"));
+ ds_stt = (data_string *)array_get_element(con->http_req->headers,CONST_STR_LEN("STT"));
+ if(ds_fil && ds_spl && ds_sph && ds_fpt && ds_stt) {
+ stat_cache_entry *sce = NULL;
+ buffer *vod_header, *fil;
+ char *err1 = NULL, *err2 = NULL, *s1 = NULL, *str;
+ long spl = strtol(ds_spl->value->ptr, &err1, 10);
+ long sph = strtol(ds_sph->value->ptr, &err2, 10);
+ long stream_pos;
+ if((*err1 != '\0') || (*err2 != '\0')) {
+ TRACE("vod parse spl %s sph %s error", BUF_STR(ds_spl->value), BUF_STR(ds_sph->value));
+ free(err1);
+ free(err2);
+ return HANDLER_GO_ON;
+ }
+ stream_pos = ((long)sph << 16) + spl;
+//if(buffer_is_equal_string(ds_fpt, CONST_STR_LEN("0")
+ fil = buffer_init_string(ds_fil->value->ptr);
+ while(s1 = strchr(BUF_STR(fil), 10))
+ *s1 = '/';
+
+ if(HANDLER_GO_ON != stat_cache_get_entry(srv, con, fil, &sce)) {
+ TRACE("vod stat() for %s failed", BUF_STR(fil));
+ return HANDLER_GO_ON;
+ }
+ con->http_status = 200;
+//now fill the vod header
+ TRACE("1vod stat() for %s failed", BUF_STR(fil));
+ chunkqueue_reset(con->send);
+ vod_header = chunkqueue_get_append_buffer(con->send);
+ TRACE("2vod stat() for %s failed", BUF_STR(fil));
+ char *h1 = "XMMS\x0\x2\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0";
+ char *h2 = "\x0\x0\x1\x0\x0\x0\x0\x0\x64\x0\x0\x0";
+ char err_msg[102], empty[262];
+ memset(err_msg, 0,101);
+ memset(empty, 0, 261);
+ buffer_copy_memory(vod_header, h1, 16);
+ TRACE("3vod stat() for %s failed", BUF_STR(fil));
+ buffer_append_memory(vod_header, (char *)&sce->st.st_size, 4);
+ buffer_append_memory(vod_header, empty, 4);
+ buffer_append_memory(vod_header, (char *)&stream_pos, 4);
+ buffer_append_memory(vod_header, empty, 4);
+ buffer_append_memory(vod_header, h2, 12);
+ buffer_append_memory(vod_header, err_msg, 100);
+ buffer_append_memory(vod_header, fil->ptr, fil->used);
+ buffer_append_memory(vod_header, empty, 260-fil->used);
+ //buffer_append_memory(vod_header, empty, 19); //file's time information
+ buffer_append_memory(vod_header, ds_stt->value->ptr, ds_stt->value->used); //file's time information
+ if(19>ds_stt->value->used)
+ buffer_append_memory(vod_header, empty, 19-ds_stt->value->used);
+ buffer_append_memory(vod_header, empty, 89);
+ TRACE("3vod stat() for %s failed", BUF_STR(fil));
+ chunkqueue_append_file(con->send, fil, stream_pos, sce->st.st_size - stream_pos);
+ con->send->is_closed = 1;
+ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("video/x"));
+ TRACE("vod sending is about to start %s!", "miao~");
+ return HANDLER_FINISHED;
+ } else
+ return HANDLER_GO_ON;
+
+ /* not found */
+ return HANDLER_GO_ON;
+}
+
+/* this function is called at dlopen() time and inits the callbacks */
+
+int mod_vod_plugin_init(plugin *p) {
+ p->version = LIGHTTPD_VERSION_ID;
+ p->name = buffer_init_string("truran vod");
+
+ p->init = mod_vod_init;
+ p->handle_response_header = mod_vod_uri_handler;
+ p->set_defaults = mod_vod_set_defaults;
+ p->cleanup = mod_vod_free;
+
+ p->data = NULL;
+
+ return 0;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-01-16 02:07:38
|
Revision: 429
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=429&view=rev
Author: pupilzeng
Date: 2008-01-15 18:07:36 -0800 (Tue, 15 Jan 2008)
Log Message:
-----------
* debian/changelog: replaced with a template, non-specific to distribution
* ppa.py: added for automatically updating ubuntu PPA, not tested yet
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/debian/changelog
Added Paths:
-----------
truran-xine/trunk/ppa.py
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2008-01-09 21:49:08 UTC (rev 428)
+++ truran-xine/trunk/ChangeLog 2008-01-16 02:07:36 UTC (rev 429)
@@ -1,3 +1,8 @@
+2008-01-15 Shixin Zeng <zen...@gm...>
+
+ * debian/changelog: replaced with a template, non-specific to distribution
+ * ppa.py: added for automatically updating ubuntu PPA, not tested yet
+
2008-01-09 Shixin Zeng <zen...@gm...>
* src/frontends/gstreamer/gstvodsrc.c: Correct the ORIGIN to
Modified: truran-xine/trunk/debian/changelog
===================================================================
--- truran-xine/trunk/debian/changelog 2008-01-09 21:49:08 UTC (rev 428)
+++ truran-xine/trunk/debian/changelog 2008-01-16 02:07:36 UTC (rev 429)
@@ -1,10 +1,10 @@
-truran-xine (0.3.1-feisty0-ppa2) feisty; urgency=low
+truran-xine (0.3.1-DISTRIBUTION-ppa2) DISTRIBUTION; urgency=low
* Fill in debian/copyright
-- Shixin Zeng (None) <zen...@gm...> Fri, 07 Dec 2007 18:58:56 -0600
-truran-xine (0.3.1-2) gutsy; urgency=low
+truran-xine (0.3.1-2) DISTRIBUTION; urgency=low
* Initial release
Added: truran-xine/trunk/ppa.py
===================================================================
--- truran-xine/trunk/ppa.py (rev 0)
+++ truran-xine/trunk/ppa.py 2008-01-16 02:07:36 UTC (rev 429)
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+import os
+import sys
+
+argc = len(sys.argv)
+if argc != 2:
+ print "ERROR: Wrong invokation\n"
+ print "Usage: %s original_tarball" % sys.argv[0]
+ sys.exit(1)
+
+orig = os.path.dirname(
+ os.path.abspath(
+ os.path.expanduser(sys.argv[1])))
+
+deb_dir = os.path.dirname(
+ os.path.abspath(
+ os.path.expanduser(sys.argv[0]))) + "/debian"
+
+pkname, tar, gz = orig.split('.')
+if tar != 'tar' or gz != 'gz':
+ print "ERROR: the specified origin file should be of .tar.gz type"
+ sys.exit(1)
+
+
+dists = ("dapper", "edgy", "feisty", "gutsy", "hardy")
+
+os.system('tar zxf %s -C /tmp' % orig)
+
+for dist in dists:
+ os.chdir('/tmp')
+ pk_dist_orign = '%s-%s-orign' % (pkname, dist)
+ os.shutil.copytree(pkname, pk_dist_orign)
+ os.shutil.copytree(deb_dir, '/tmp/' + pkname)
+ #generate changelog for the
+ os.chdir("%s" % '/tmp/' + pkname + 'debian')
+ os.system('sed "s/DISTRIBUTION/%s/g" %s/changelog > /tmp/%s/debian/changelog' % (dist, deb_dir, pkname))
+ os.chdir("../")
+ os.system('gpg -S -a')
+ os.system('dput ../*.changes')
+ os.unlink('../*.changes')
+ os.unlink('../%s.tar.gz' % pk_dist_orign)
+ os.shutil.rmtree('/tmp/%s/debian' % pkname)
+
+os.shutil.rmtree('/tmp/' + pkname)
Property changes on: truran-xine/trunk/ppa.py
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-01-09 21:49:13
|
Revision: 428
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=428&view=rev
Author: pupilzeng
Date: 2008-01-09 13:49:08 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
* chrome/content/comicview/comicview.js:
* chrome/content/comicview/comicviewOverlay.xul:
distinguish URLs feeded to mplayer and totem
Modified Paths:
--------------
comicview/trunk/ChangeLog
comicview/trunk/chrome/content/comicview/comicview.js
comicview/trunk/chrome/content/comicview/comicviewOverlay.xul
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2008-01-09 21:47:09 UTC (rev 427)
+++ comicview/trunk/ChangeLog 2008-01-09 21:49:08 UTC (rev 428)
@@ -1,3 +1,9 @@
+2008-01-09 Shixin Zeng <zen...@gm...>
+
+ * chrome/content/comicview/comicview.js:
+ * chrome/content/comicview/comicviewOverlay.xul:
+ distinguish URLs feeded to mplayer and totem
+
2007-12-25 Shixin Zeng <zen...@gm...>
* install.js: update the discriptions
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2008-01-09 21:47:09 UTC (rev 427)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2008-01-09 21:49:08 UTC (rev 428)
@@ -36,7 +36,8 @@
var hide = (null == comicParseLink(cm));
document.getElementById("comic-view-mplayer").hidden = hide;
document.getElementById("comic-view-totem").hidden = hide;
- document.getElementById("comic-view-showurl").hidden = hide;
+ document.getElementById("comic-view-showurlm").hidden = hide;
+ document.getElementById("comic-view-showurlt").hidden = hide;
}
function comicPlay(player) {
@@ -44,12 +45,31 @@
var url= comicParseLink(cm);
comicLaunchPlayer(url, player);
}
-function showURL() {
+function showURL(player) {
var cm = gContextMenu;
- var url= comicParseLink(cm);
- //alert(url);
- popup = window.open('', 'popup', 'width=800,height=200');
- popup.document.write(url.replace(/\\/ig, "\\\\"));
+ var url = comicParseLink(cm);
+ var encoding="UTF-8";
+ alert(url);
+ var doc = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_CN">\n \t<head>\n \t\t<meta http-equiv="content-type" content="text/html; charset=';
+ if(player == "mplayer"){
+ encoding = getCharset("vod");
+ }else{
+ encoding = getCharset("locale");
+ }
+ doc += encoding;
+ doc += '" />\n\t\t <title>URL for ' + player + '</title> \n\t\t</head>\n\t\t\t<body>';
+ if(encoding != 'UTF-8'){
+ url = toUnicode(url, "UTF-8");
+ var tmp = fromUnicode(url, encoding).replace(/\\/ig, "\\\\");
+ alert(tmp);
+ doc += tmp;
+ }
+ else
+ doc += url.replace(/\\/ig, "\\\\");
+ doc += "</body>";
+
+ popup = window.open('', 'popup', 'width=800,height=200,menubar=yes');
+ popup.document.write(doc);
}
//return URL encoded in UTF-8
@@ -81,7 +101,7 @@
if (result) {
var URL=href;
URL = unescape(URL);
- URL = toUnicode(URL);
+ URL = toUnicode(URL, "UTF-8");
// URL = fromUnicode(URL, getCharset("locale"));
return URL;
}
@@ -182,20 +202,23 @@
var env = Components.classes["@mozilla.org/process/environment;1"].
getService(Components.interfaces.nsIEnvironment);
if(env.exists("LC_CTYPE"))
- lang = env.get("LC_CTYPE");
+ lang = env.get("LC_CTYPE");
else if(env.exists("LANG"))
- lang = env.get("LANG");
+ lang = env.get("LANG");
- var al = lang.split(".");
- if(al[1] == "" && al[0] == "zh_CN"){
- alert("Please set environment variable LANG with an encoding explicitly, now I assume it's GB2312");
- encoding = "GB2312";
- }else if(al[1] == "" && al[0] != "zh_CN"){
- alert("Please set environment variable LANG with an encoding explicitly, now I assume it's UTF-8");
- encoding = "UTF-8";
- }else{
- encoding = al[1];
- }
+ var al = lang.split(".");
+ if(al != null){
+ if(al[1] == "" && al[0] == "zh_CN"){
+ alert("Please set environment variable LANG with an encoding explicitly, now I assume it's GB2312");
+ encoding = "GB2312";
+ }else if(al[1] == "" && al[0] != "zh_CN"){
+ alert("Please set environment variable LANG with an encoding explicitly, now I assume it's UTF-8");
+ encoding = "UTF-8";
+ }else if(al[1] != undefined){
+ encoding = al[1];
+ }
+ }
+ alert(encoding);
prefs.setCharPref(LOCALE_CHARSET, encoding);
}
return encoding;
@@ -212,15 +235,16 @@
var nsIScriptableUnicodeConverter = scriptableUnicodeConverter.QueryInterface(
Components.interfaces.nsIScriptableUnicodeConverter);
nsIScriptableUnicodeConverter.charset = charset;
- return nsIScriptableUnicodeConverter.ConvertFromUnicode(txt);
+ var ret = nsIScriptableUnicodeConverter.ConvertFromUnicode(txt);
+ return ret + nsIScriptableUnicodeConverter.Finish();
}
-function toUnicode(txt){
+function toUnicode(txt, charset){
var scriptableUnicodeConverter =
Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].getService();
var nsIScriptableUnicodeConverter=scriptableUnicodeConverter.QueryInterface(
Components.interfaces.nsIScriptableUnicodeConverter);
- nsIScriptableUnicodeConverter.charset = "UTF-8";
+ nsIScriptableUnicodeConverter.charset = charset;
return nsIScriptableUnicodeConverter.ConvertToUnicode(txt);
}
Modified: comicview/trunk/chrome/content/comicview/comicviewOverlay.xul
===================================================================
--- comicview/trunk/chrome/content/comicview/comicviewOverlay.xul 2008-01-09 21:47:09 UTC (rev 427)
+++ comicview/trunk/chrome/content/comicview/comicviewOverlay.xul 2008-01-09 21:49:08 UTC (rev 428)
@@ -28,11 +28,15 @@
oncommand="comicPlay('totem');"
accesskey="T" />
<menuitem
- id="comic-view-showurl"
- label="Show VOD url"
+ id="comic-view-showurlm"
+ label="Show VOD url(Mplayer)"
insertbefore="context-openlink"
- oncommand="showURL();"
- accesskey="S" />
+ oncommand="showURL('mplayer'); "/>
+ <menuitem
+ id="comic-view-showurlt"
+ label="Show VOD url(Totem)"
+ insertbefore="context-openlink"
+ oncommand="showURL('totem');" />
<!--
</menupopup>
</menu>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2008-01-09 21:47:17
|
Revision: 427
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=427&view=rev
Author: pupilzeng
Date: 2008-01-09 13:47:09 -0800 (Wed, 09 Jan 2008)
Log Message:
-----------
* src/frontends/gstreamer/gstvodsrc.c: Correct the ORIGIN to
the website
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2007-12-25 22:31:49 UTC (rev 426)
+++ truran-xine/trunk/ChangeLog 2008-01-09 21:47:09 UTC (rev 427)
@@ -1,3 +1,8 @@
+2008-01-09 Shixin Zeng <zen...@gm...>
+
+ * src/frontends/gstreamer/gstvodsrc.c: Correct the ORIGIN to
+ the website
+
2007-10-08 Shixin Zeng <zen...@gm...>
* Add run-time version checking functions
Modified: truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c
===================================================================
--- truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c 2007-12-25 22:31:49 UTC (rev 426)
+++ truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c 2008-01-09 21:47:09 UTC (rev 427)
@@ -450,7 +450,7 @@
#define GST_LICENSE "GPL"
#define GST_PACKAGE_NAME "truran"
-#define GST_PACKAGE_ORIGIN "ugly"
+#define GST_PACKAGE_ORIGIN "http://mplayer-tru.sf.net"
DLLPUBLIC
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-12-25 22:31:55
|
Revision: 426
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=426&view=rev
Author: pupilzeng
Date: 2007-12-25 14:31:49 -0800 (Tue, 25 Dec 2007)
Log Message:
-----------
* install.js: update the discriptions
* install.rdf: bump the max supported firefox version to 3.0.0.*
Modified Paths:
--------------
comicview/trunk/ChangeLog
comicview/trunk/install.js
comicview/trunk/install.rdf
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2007-12-08 03:45:14 UTC (rev 425)
+++ comicview/trunk/ChangeLog 2007-12-25 22:31:49 UTC (rev 426)
@@ -1,3 +1,8 @@
+2007-12-25 Shixin Zeng <zen...@gm...>
+
+ * install.js: update the discriptions
+ * install.rdf: bump the max supported firefox version to 3.0.0.*
+
2007-09-02 Shixin Zeng <zen...@gm...>
* chrome/content/comicview/comicview.js: hide showurl in popup menu when
Modified: comicview/trunk/install.js
===================================================================
--- comicview/trunk/install.js 2007-12-08 03:45:14 UTC (rev 425)
+++ comicview/trunk/install.js 2007-12-25 22:31:49 UTC (rev 426)
@@ -1,6 +1,6 @@
initInstall("ComicPlayer", "/firefox extensions/comicplayer", "0.0");
-alert("Sorry, this extension package is designed for Mozilla Firefox 0.9 and higher.\n"
+alert("Sorry, this extension package is designed for Mozilla Firefox 1.5 and higher.\n"
+ "Please upgrade your browser to a newer version");
cancelInstall();
Modified: comicview/trunk/install.rdf
===================================================================
--- comicview/trunk/install.rdf 2007-12-08 03:45:14 UTC (rev 425)
+++ comicview/trunk/install.rdf 2007-12-25 22:31:49 UTC (rev 426)
@@ -14,7 +14,7 @@
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
- <em:maxVersion>2.0.0.*</em:maxVersion>
+ <em:maxVersion>3.0.0.*</em:maxVersion>
</Description>
</em:targetApplication>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-12-08 03:45:19
|
Revision: 425
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=425&view=rev
Author: pupilzeng
Date: 2007-12-07 19:45:14 -0800 (Fri, 07 Dec 2007)
Log Message:
-----------
add files for build an ubuntu package
Added Paths:
-----------
truran-xine/trunk/debian/
truran-xine/trunk/debian/README.Debian
truran-xine/trunk/debian/changelog
truran-xine/trunk/debian/compat
truran-xine/trunk/debian/control
truran-xine/trunk/debian/copyright
truran-xine/trunk/debian/docs
truran-xine/trunk/debian/rules
truran-xine/trunk/debian/truran-xine1.install
Added: truran-xine/trunk/debian/README.Debian
===================================================================
--- truran-xine/trunk/debian/README.Debian (rev 0)
+++ truran-xine/trunk/debian/README.Debian 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,6 @@
+truran-xine for Debian
+----------------------
+
+./configure --disable-nbc
+
+ -- Shixin Zeng (None) <zen...@gm...> Fri, 07 Dec 2007 17:36:56 -0600
Added: truran-xine/trunk/debian/changelog
===================================================================
--- truran-xine/trunk/debian/changelog (rev 0)
+++ truran-xine/trunk/debian/changelog 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,12 @@
+truran-xine (0.3.1-feisty0-ppa2) feisty; urgency=low
+
+ * Fill in debian/copyright
+
+ -- Shixin Zeng (None) <zen...@gm...> Fri, 07 Dec 2007 18:58:56 -0600
+
+truran-xine (0.3.1-2) gutsy; urgency=low
+
+ * Initial release
+
+ -- Shixin Zeng (None) <zen...@gm...> Fri, 07 Dec 2007 17:36:56 -0600
+
Added: truran-xine/trunk/debian/compat
===================================================================
--- truran-xine/trunk/debian/compat (rev 0)
+++ truran-xine/trunk/debian/compat 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1 @@
+5
Added: truran-xine/trunk/debian/control
===================================================================
--- truran-xine/trunk/debian/control (rev 0)
+++ truran-xine/trunk/debian/control 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,17 @@
+Source: truran-xine
+Priority: extra
+Maintainer: Shixin Zeng (None) <zen...@gm...>
+Build-Depends: debhelper (>= 5), autotools-dev, libxine-dev
+Standards-Version: 3.7.2
+Section: libs
+
+Package: truran-xine1
+Section: libs
+Architecture: any
+Depends: libxine1
+Description: A truran plugin for xine-lib
+ This is a plugin for xine-lib providing Truran VOD (http://www.boful.com/) support.
+ .
+ Currently, Truran VOD system is a close-source product and it runs only on Win32 system. Mplayer-tru project is to implement the client on other platforms as a open-source project distributed under terms of GPL(General Public License). It aims to add Truran VOD system support to the popular multimedia players on Linu
+ .
+ Homepage for Mplayer-tru project http://mplayer-tru.sf.net
Added: truran-xine/trunk/debian/copyright
===================================================================
--- truran-xine/trunk/debian/copyright (rev 0)
+++ truran-xine/trunk/debian/copyright 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,23 @@
+This package was debianized by Shixin Zeng (None) <zen...@gm...> on
+Fri, 07 Dec 2007 17:36:56 -0600.
+
+It was downloaded from <http://mplayer-tru.sf.net>
+
+Upstream Author(s):
+
+ <zen...@gm...>
+
+Copyright:
+
+ <Copyright (C) 2004~2007 Shixin Zeng>
+ <likewise for another author>
+
+License:
+
+ GPL
+
+The Debian packaging is (C) 2007, Shixin Zeng (None) <zen...@gm...> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
Added: truran-xine/trunk/debian/docs
===================================================================
--- truran-xine/trunk/debian/docs (rev 0)
+++ truran-xine/trunk/debian/docs 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,4 @@
+NEWS
+README
+README.x86_64
+TODO
Added: truran-xine/trunk/debian/rules
===================================================================
--- truran-xine/trunk/debian/rules (rev 0)
+++ truran-xine/trunk/debian/rules 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1,114 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+# shared library versions, option 1
+version=2.0.5
+major=2
+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
+#version=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
+#major=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
+
+config.status: configure
+ dh_testdir
+ # Add here commands to configure the package.
+ifneq "$(wildcard /usr/share/misc/config.sub)" ""
+ cp -f /usr/share/misc/config.sub config.sub
+endif
+ifneq "$(wildcard /usr/share/misc/config.guess)" ""
+ cp -f /usr/share/misc/config.guess config.guess
+endif
+ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" --disable-nbc
+
+
+build: build-stamp
+build-stamp: config.status
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) distclean
+ rm -f config.sub config.guess
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/tmp
+ $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs ChangeLog
+ dh_installdocs
+ dh_installexamples
+ dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_python
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
Property changes on: truran-xine/trunk/debian/rules
___________________________________________________________________
Name: svn:executable
+ *
Added: truran-xine/trunk/debian/truran-xine1.install
===================================================================
--- truran-xine/trunk/debian/truran-xine1.install (rev 0)
+++ truran-xine/trunk/debian/truran-xine1.install 2007-12-08 03:45:14 UTC (rev 425)
@@ -0,0 +1 @@
+debian/tmp/usr/lib/xine/plugins/1.*/*.so
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-10-08 17:01:14
|
Revision: 424
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=424&view=rev
Author: pupilzeng
Date: 2007-10-08 10:01:10 -0700 (Mon, 08 Oct 2007)
Log Message:
-----------
* Add run-time version checking functions
* configure.in: add check for inline
* src/include/platforms.h:
* src/lib/Makefile.am: add version.c
* src/lib/version.c: (vod_version_major), (vod_version_minor),
(vod_version_macro), (vod_version_string): New
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/configure.in
truran-xine/trunk/src/include/platforms.h
truran-xine/trunk/src/lib/Makefile.am
Added Paths:
-----------
truran-xine/trunk/src/lib/version.c
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2007-09-02 20:12:59 UTC (rev 423)
+++ truran-xine/trunk/ChangeLog 2007-10-08 17:01:10 UTC (rev 424)
@@ -1,3 +1,12 @@
+2007-10-08 Shixin Zeng <zen...@gm...>
+
+ * Add run-time version checking functions
+ * configure.in: add check for inline
+ * src/include/platforms.h:
+ * src/lib/Makefile.am: add version.c
+ * src/lib/version.c: (vod_version_major), (vod_version_minor),
+ (vod_version_macro), (vod_version_string): New
+
2007-09-01 Shixin Zeng <zen...@gm...>
* src/frontends/xine-lib/input_vod.c: (vod_plugin_dispose),
Modified: truran-xine/trunk/configure.in
===================================================================
--- truran-xine/trunk/configure.in 2007-09-02 20:12:59 UTC (rev 423)
+++ truran-xine/trunk/configure.in 2007-10-08 17:01:10 UTC (rev 424)
@@ -12,21 +12,21 @@
dnl ================================================================
dnl the version for the protocol
dnl ================================================================
-m4_define([vod_version_major], [0])
-m4_define([vod_version_minor], [3])
-m4_define([vod_version_macro], [0])
+m4_define([vod_version_major_m], [0])
+m4_define([vod_version_minor_m], [3])
+m4_define([vod_version_macro_m], [0])
AC_INIT([truran-xine],
- truran_version_major.truran_version_minor.truran_version_macro,
+ truran_version_major_m.truran_version_minor_m.truran_version_macro_m,
[shi...@sj...])
AC_CONFIG_SRCDIR([src/lib/vod.c])
AM_INIT_AUTOMAKE()
AM_CONFIG_HEADER(config.h)
-VOD_VERSION_MAJOR=vod_version_major
-VOD_VERSION_MINOR=vod_version_minor
-VOD_VERSION_MACRO=vod_version_macro
+VOD_VERSION_MAJOR=vod_version_major_m
+VOD_VERSION_MINOR=vod_version_minor_m
+VOD_VERSION_MACRO=vod_version_macro_m
AC_CONFIG_COMMANDS([src/include/version.h],
[ dest=src/include/version.h
cat > $dest << _EOF
@@ -34,10 +34,43 @@
#ifndef VOD_VERSION_H
#define VOD_VERSION_H
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "version.h"
+#include "misc.h"
+#include "platforms.h"
+
#define VOD_VERSION_MAJOR $VOD_VERSION_MAJOR
#define VOD_VERSION_MINOR $VOD_VERSION_MINOR
#define VOD_VERSION_MACRO $VOD_VERSION_MACRO
+#define VOD_VERSION_STRING(MJ,MI, MA) #MJ "." #MI "." #MA
+
+BEGIN_DECLS
+
+DLLPUBLIC inline int
+vod_version_major();
+
+DLLPUBLIC inline int
+vod_version_minor();
+
+DLLPUBLIC inline int
+vod_version_macro();
+
+DLLPUBLIC inline int
+vod_version();
+
+/*
+ *
+ * return: a const string, must not be free'ed
+ */
+DLLPUBLIC inline const char *
+vod_version_string();
+
+END_DECLS
+
#endif
_EOF
],[
@@ -52,6 +85,8 @@
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
+AC_C_INLINE
+
AC_ARG_ENABLE(reconnect,,
reconnect=yes,
reconnect=no)
Modified: truran-xine/trunk/src/include/platforms.h
===================================================================
--- truran-xine/trunk/src/include/platforms.h 2007-09-02 20:12:59 UTC (rev 423)
+++ truran-xine/trunk/src/include/platforms.h 2007-10-08 17:01:10 UTC (rev 424)
@@ -106,4 +106,4 @@
#endif
#endif// _WIN32
-#endif
+#endif /* VOD_PLATFORMS_H */
Modified: truran-xine/trunk/src/lib/Makefile.am
===================================================================
--- truran-xine/trunk/src/lib/Makefile.am 2007-09-02 20:12:59 UTC (rev 423)
+++ truran-xine/trunk/src/lib/Makefile.am 2007-10-08 17:01:10 UTC (rev 424)
@@ -5,7 +5,9 @@
noinst_LIBRARIES=libvod.a
libvod_a_SOURCES=vod.c \
vod_io_default_functions.c \
- cache.c
+ cache.c\
+ version.c
+
libvod_a_CFLAGS=$(CFLAGS) -fPIC -DBUILDING_DLL
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/include -I../include
Added: truran-xine/trunk/src/lib/version.c
===================================================================
--- truran-xine/trunk/src/lib/version.c (rev 0)
+++ truran-xine/trunk/src/lib/version.c 2007-10-08 17:01:10 UTC (rev 424)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2007 Shixin Zeng(zen...@gm...)
+ *
+ * This file is part of libtruran, a C library for truran protocol
+ *
+ * libtruran is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * libtruran is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "version.h"
+#include "misc.h"
+#include "platforms.h"
+
+int
+vod_version_major()
+{
+ return VOD_VERSION_MAJOR;
+}
+int
+vod_version_minor()
+{
+ return VOD_VERSION_MINOR;
+}
+
+int
+vod_version_macro()
+{
+ return VOD_VERSION_MACRO;
+}
+
+const char *
+vod_version_string()
+{
+ return VOD_VERSION_STRING(VOD_VERSION_MAJOR, VOD_VERSION_MINOR, VOD_VERSION_MACRO);
+}
Property changes on: truran-xine/trunk/src/lib/version.c
___________________________________________________________________
Name: svn:keywords
+ id
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-09-02 20:13:12
|
Revision: 423
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=423&view=rev
Author: pupilzeng
Date: 2007-09-02 13:12:59 -0700 (Sun, 02 Sep 2007)
Log Message:
-----------
* chrome/content/comicview/comicview.js: hide showurl in popup menu when
it's not a vod link
* chrome/content/comicview/contents.rdf: delete the element "displayName"
which seems not to be used anywhere.
Modified Paths:
--------------
comicview/trunk/ChangeLog
comicview/trunk/chrome/content/comicview/comicview.js
comicview/trunk/chrome/content/comicview/contents.rdf
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2007-09-01 20:03:51 UTC (rev 422)
+++ comicview/trunk/ChangeLog 2007-09-02 20:12:59 UTC (rev 423)
@@ -1,3 +1,10 @@
+2007-09-02 Shixin Zeng <zen...@gm...>
+
+ * chrome/content/comicview/comicview.js: hide showurl in popup menu when
+ it's not a vod link
+ * chrome/content/comicview/contents.rdf: delete the element "displayName"
+ which seems not to be used anywhere.
+
2007-08-31 Shixin Zeng <zen...@gm...>
* chrome/content/comicview/comicview.js: add a new function showURL
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2007-09-01 20:03:51 UTC (rev 422)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2007-09-02 20:12:59 UTC (rev 423)
@@ -36,6 +36,7 @@
var hide = (null == comicParseLink(cm));
document.getElementById("comic-view-mplayer").hidden = hide;
document.getElementById("comic-view-totem").hidden = hide;
+ document.getElementById("comic-view-showurl").hidden = hide;
}
function comicPlay(player) {
Modified: comicview/trunk/chrome/content/comicview/contents.rdf
===================================================================
--- comicview/trunk/chrome/content/comicview/contents.rdf 2007-09-01 20:03:51 UTC (rev 422)
+++ comicview/trunk/chrome/content/comicview/contents.rdf 2007-09-02 20:12:59 UTC (rev 423)
@@ -8,7 +8,6 @@
</RDF:Seq>
<RDF:Description about="urn:mozilla:package:comicview"
- chrome:displayName="Comic View 0.2.6"
chrome:author="pigworlds"
chrome:authorURL="http://mplayer-tru.sourceforge.net/"
chrome:name="comicview"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-09-01 20:03:57
|
Revision: 422
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=422&view=rev
Author: pupilzeng
Date: 2007-09-01 13:03:51 -0700 (Sat, 01 Sep 2007)
Log Message:
-----------
add a script for version bumping
Added Paths:
-----------
comicview/trunk/BumpToVerion.sh
Added: comicview/trunk/BumpToVerion.sh
===================================================================
--- comicview/trunk/BumpToVerion.sh (rev 0)
+++ comicview/trunk/BumpToVerion.sh 2007-09-01 20:03:51 UTC (rev 422)
@@ -0,0 +1,13 @@
+#!/bin/sh
+version=$1
+sed -i "s/<em:version>.*<\/em:version>/<em:version>$version<\/em:version>/" install.rdf
+DATE=`date +%Y-%m-%d`
+cat > tmp.0738 <<LOGEND
+$DATE Shixin Zeng <zen...@gm...>
+
+ * install.rdf: bump to $version
+
+LOGEND
+cat ChangeLog >>tmp.0738
+mv tmp.0738 ChangeLog
+svn ci -m "bump to $version" install.rdf ChangeLog
Property changes on: comicview/trunk/BumpToVerion.sh
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-09-01 05:30:57
|
Revision: 421
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=421&view=rev
Author: pupilzeng
Date: 2007-08-31 22:30:54 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
* src/frontends/xine-lib/input_vod.c: (vod_plugin_dispose),
(vod_plugin_open), (vod_class_get_instance): remove preprocess
compilation condition LOG
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/src/frontends/xine-lib/input_vod.c
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2007-09-01 04:37:24 UTC (rev 420)
+++ truran-xine/trunk/ChangeLog 2007-09-01 05:30:54 UTC (rev 421)
@@ -1,3 +1,9 @@
+2007-09-01 Shixin Zeng <zen...@gm...>
+
+ * src/frontends/xine-lib/input_vod.c: (vod_plugin_dispose),
+ (vod_plugin_open), (vod_class_get_instance): remove preprocess
+ compilation condition LOG
+
2007-07-08 Shixin Zeng <zen...@gm...>
* src/frontends/gstreamer/gstvodsrc.c: cleanups
Modified: truran-xine/trunk/src/frontends/xine-lib/input_vod.c
===================================================================
--- truran-xine/trunk/src/frontends/xine-lib/input_vod.c 2007-09-01 04:37:24 UTC (rev 420)
+++ truran-xine/trunk/src/frontends/xine-lib/input_vod.c 2007-09-01 05:30:54 UTC (rev 421)
@@ -58,9 +58,6 @@
xine_stream_t *stream;
vod_t *vod;
char *mrl;
-#ifdef LOG
- FILE *logfile;
-#endif
#ifdef ENABLE_NBC
nbc_t *nbc;
@@ -199,9 +196,6 @@
static void vod_plugin_dispose (input_plugin_t *this_gen ) {
vod_input_plugin_t *this = (vod_input_plugin_t *) this_gen;
-#ifdef LOG
- if(this->logfile != NULL) fclose(this->logfile);
-#endif
vod_close(this->vod);
if(this->mrl)
@@ -215,41 +209,6 @@
free (this);
}
-#ifdef LOG
-/** @brief write url to filepath
- * @url:
- * @filepath: when not specified, /tmp/xine-truran.url will be used.
- *
- * @return:
- * 0 on success
- * -1 on failure
- * */
-static int
-log_to_file(vod_input_plugin_t *this, const char *content, const char *filepath) {
- if(this->logfile == NULL){
- if(filepath == NULL){
- char *tmpdir = getenv("TMPDIR");
- char template[1024];
- snprintf(template, 1024, "%s/%s",
- (tmpdir == NULL || *tmpdir == '\0')? "/tmp" : tmpdir,
- "xine-truran.url");
- this->logfile = fopen(template, "w");
- }else{
- this->logfile = fopen(filepath, "w");
- }
- if(this->logfile == NULL){
- xine_log(this->stream->xine, XINE_LOG_PLUGIN, _("Can't create logfile: %s\n"), strerror(errno));
- return -1;
- }
- }
- if(fwrite(content, 1, strlen(content), this->logfile) < 0){
- xine_log(this->stream->xine, XINE_LOG_PLUGIN, _("Can't write to the logfile: %s\n"), strerror(errno));
- fclose(this->logfile);
- return -1;
- }
- return 0;
-}
-#endif
/*
* connect to the host
* analysis the response
@@ -267,10 +226,6 @@
#endif
vod_input_plugin_t *this = (vod_input_plugin_t *) this_gen;
-#ifdef LOG
- log_to_file(this, this->mrl, NULL);
- fflush(this->logfile);
-#endif
#ifdef HAVE_LANGINFO_CODESET
char *mrl = from_locale(this->mrl, VOD_SERVER_CHARSET);
#else
@@ -343,9 +298,6 @@
#ifdef ENABLE_NBC
this->nbc = nbc_init (stream);
#endif
-#ifdef LOG
- this->logfile = NULL;
-#endif
this->input_plugin.open = vod_plugin_open;
this->input_plugin.get_capabilities = vod_plugin_get_capabilities;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-09-01 04:37:29
|
Revision: 420
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=420&view=rev
Author: pupilzeng
Date: 2007-08-31 21:37:24 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
fix a typo in changelog
Modified Paths:
--------------
comicview/trunk/ChangeLog
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2007-09-01 04:07:36 UTC (rev 419)
+++ comicview/trunk/ChangeLog 2007-09-01 04:37:24 UTC (rev 420)
@@ -2,7 +2,7 @@
* chrome/content/comicview/comicview.js: add a new function showURL
* chrome/content/comicview/comicviewOverlay.xul: add a new entry "show
- Truran URL for debug purpose
+ Truran URL" for debug purpose
* chrome/content/comicview/contents.rdf: bump to 0.2.6
* install.rdf: ditto
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-09-01 04:07:41
|
Revision: 419
http://mplayer-tru.svn.sourceforge.net/mplayer-tru/?rev=419&view=rev
Author: pupilzeng
Date: 2007-08-31 21:07:36 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
* chrome/content/comicview/comicview.js: add a new function showURL
* chrome/content/comicview/comicviewOverlay.xul: add a new entry "show
Truran URL for debug purpose
* chrome/content/comicview/contents.rdf: bump to 0.2.6
* install.rdf: ditto
Modified Paths:
--------------
comicview/trunk/ChangeLog
comicview/trunk/chrome/content/comicview/comicview.js
comicview/trunk/chrome/content/comicview/comicviewOverlay.xul
comicview/trunk/chrome/content/comicview/contents.rdf
comicview/trunk/install.rdf
Modified: comicview/trunk/ChangeLog
===================================================================
--- comicview/trunk/ChangeLog 2007-07-08 21:53:39 UTC (rev 418)
+++ comicview/trunk/ChangeLog 2007-09-01 04:07:36 UTC (rev 419)
@@ -1,4 +1,12 @@
-2007-03-01 Shixin Zeng <zen...@gm...
+2007-08-31 Shixin Zeng <zen...@gm...>
+
+ * chrome/content/comicview/comicview.js: add a new function showURL
+ * chrome/content/comicview/comicviewOverlay.xul: add a new entry "show
+ Truran URL for debug purpose
+ * chrome/content/comicview/contents.rdf: bump to 0.2.6
+ * install.rdf: ditto
+
+2007-03-01 Shixin Zeng <zen...@gm...>
* 0.2.5 released
Modified: comicview/trunk/chrome/content/comicview/comicview.js
===================================================================
--- comicview/trunk/chrome/content/comicview/comicview.js 2007-07-08 21:53:39 UTC (rev 418)
+++ comicview/trunk/chrome/content/comicview/comicview.js 2007-09-01 04:07:36 UTC (rev 419)
@@ -43,6 +43,13 @@
var url= comicParseLink(cm);
comicLaunchPlayer(url, player);
}
+function showURL() {
+ var cm = gContextMenu;
+ var url= comicParseLink(cm);
+ //alert(url);
+ popup = window.open('', 'popup', 'width=800,height=200');
+ popup.document.write(url.replace(/\\/ig, "\\\\"));
+}
//return URL encoded in UTF-8
function matchVOD(cm) {
Modified: comicview/trunk/chrome/content/comicview/comicviewOverlay.xul
===================================================================
--- comicview/trunk/chrome/content/comicview/comicviewOverlay.xul 2007-07-08 21:53:39 UTC (rev 418)
+++ comicview/trunk/chrome/content/comicview/comicviewOverlay.xul 2007-09-01 04:07:36 UTC (rev 419)
@@ -9,18 +9,35 @@
<script type="application/x-javascript" src="chrome://comicview/content/comicview.js" />
<popup id="contentAreaContextMenu">
- <menuitem
- id="comic-view-mplayer"
- label="View with MPlayer"
- insertbefore="context-openlink"
- oncommand="comicPlay('mplayer');"
- accesskey="M" />
- <menuitem
- id="comic-view-totem"
- label="View with totem"
- insertbefore="context-openlink"
- oncommand="comicPlay('totem');"
- accesskey="T" />
+ <!--
+ <menu
+ id="truran"
+ label="Truran Options">
+ <menupopup popupanchor="topright">
+ -->
+ <menuitem
+ id="comic-view-mplayer"
+ label="View with MPlayer"
+ insertbefore="context-openlink"
+ oncommand="comicPlay('mplayer');"
+ accesskey="M" />
+ <menuitem
+ id="comic-view-totem"
+ label="View with totem"
+ insertbefore="context-openlink"
+ oncommand="comicPlay('totem');"
+ accesskey="T" />
+ <menuitem
+ id="comic-view-showurl"
+ label="Show VOD url"
+ insertbefore="context-openlink"
+ oncommand="showURL();"
+ accesskey="S" />
+ <!--
+ </menupopup>
+ </menu>
+ -->
+ <menuseparator />
</popup>
</overlay>
Modified: comicview/trunk/chrome/content/comicview/contents.rdf
===================================================================
--- comicview/trunk/chrome/content/comicview/contents.rdf 2007-07-08 21:53:39 UTC (rev 418)
+++ comicview/trunk/chrome/content/comicview/contents.rdf 2007-09-01 04:07:36 UTC (rev 419)
@@ -8,7 +8,7 @@
</RDF:Seq>
<RDF:Description about="urn:mozilla:package:comicview"
- chrome:displayName="Comic View 0.2.5"
+ chrome:displayName="Comic View 0.2.6"
chrome:author="pigworlds"
chrome:authorURL="http://mplayer-tru.sourceforge.net/"
chrome:name="comicview"
Modified: comicview/trunk/install.rdf
===================================================================
--- comicview/trunk/install.rdf 2007-07-08 21:53:39 UTC (rev 418)
+++ comicview/trunk/install.rdf 2007-09-01 04:07:36 UTC (rev 419)
@@ -6,7 +6,7 @@
<Description about="urn:mozilla:install-manifest">
<!-- properties -->
<em:id>{126ed304-baff-4b2a-937a-03a2ca7fff00}</em:id>
- <em:version>0.2.5</em:version>
+ <em:version>0.2.6</em:version>
<!-- Target Application this extension can install into,
with minimum and maximum supported versions. -->
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-07-08 21:53:41
|
Revision: 418
http://svn.sourceforge.net/mplayer-tru/?rev=418&view=rev
Author: pupilzeng
Date: 2007-07-08 14:53:39 -0700 (Sun, 08 Jul 2007)
Log Message:
-----------
fix a typo preventing from building
Modified Paths:
--------------
truran-xine/trunk/src/lib/vod_io_default_functions.c
Modified: truran-xine/trunk/src/lib/vod_io_default_functions.c
===================================================================
--- truran-xine/trunk/src/lib/vod_io_default_functions.c 2007-07-08 19:22:16 UTC (rev 417)
+++ truran-xine/trunk/src/lib/vod_io_default_functions.c 2007-07-08 21:53:39 UTC (rev 418)
@@ -332,7 +332,7 @@
return VOD_IO_ERROR;
}
}
-
+ }
return ret;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pup...@us...> - 2007-07-08 19:22:17
|
Revision: 417
http://svn.sourceforge.net/mplayer-tru/?rev=417&view=rev
Author: pupilzeng
Date: 2007-07-08 12:22:16 -0700 (Sun, 08 Jul 2007)
Log Message:
-----------
* src/frontends/gstreamer/gstvodsrc.c: cleanups
* src/lib/vod_io_default_functions.c: account for interrupt in
vod_io_default_connect_finish.
Modified Paths:
--------------
truran-xine/trunk/ChangeLog
truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c
truran-xine/trunk/src/lib/vod_io_default_functions.c
Modified: truran-xine/trunk/ChangeLog
===================================================================
--- truran-xine/trunk/ChangeLog 2007-05-20 20:17:46 UTC (rev 416)
+++ truran-xine/trunk/ChangeLog 2007-07-08 19:22:16 UTC (rev 417)
@@ -1,3 +1,9 @@
+2007-07-08 Shixin Zeng <zen...@gm...>
+
+ * src/frontends/gstreamer/gstvodsrc.c: cleanups
+ * src/lib/vod_io_default_functions.c: account for interrupt in
+ vod_io_default_connect_finish.
+
2007-05-01 Shixin Zeng <zen...@gm...>
* configure.in: beautify the help system. use @<:@ and @:>@ to produce '['
Modified: truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c
===================================================================
--- truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c 2007-05-20 20:17:46 UTC (rev 416)
+++ truran-xine/trunk/src/frontends/gstreamer/gstvodsrc.c 2007-07-08 19:22:16 UTC (rev 417)
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id:$
+ * $Id$
*/
#ifdef HAVE_CONFIG_H
Modified: truran-xine/trunk/src/lib/vod_io_default_functions.c
===================================================================
--- truran-xine/trunk/src/lib/vod_io_default_functions.c 2007-05-20 20:17:46 UTC (rev 416)
+++ truran-xine/trunk/src/lib/vod_io_default_functions.c 2007-07-08 19:22:16 UTC (rev 417)
@@ -309,26 +309,29 @@
int ret;
int fd = *(int*)conn;
- ret = vod_io_select(fd, VOD_IO_WRITE_READY, timeout_msec);
+ while(1){
+ ret = vod_io_select(fd, VOD_IO_WRITE_READY, timeout_msec);
- /* find out, if connection is successfull */
- if (ret == VOD_IO_READY) {
- socklen_t len = sizeof(int);
- int err;
-
- if ((getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&err, &len)) == -1) {
+ /* find out, if connection is successfull */
+ if (ret == VOD_IO_READY) {
+ socklen_t len = sizeof(int);
+ int err;
+
+ if ((getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&err, &len)) == -1) {
#ifdef _DEBUG
- perror(_("failed to get status of socket"));
+ perror(_("failed to get status of socket"));
#endif
- return VOD_IO_ERROR;
- }
- if (err) {
+ return VOD_IO_ERROR;
+ }
+ if (err == 0) {
+ break;
+ }else if(err != EINPROGRESS){
#ifdef _DEBUG
- perror("");
+ perror("");
#endif
- return VOD_IO_ERROR;
- }
- }
+ return VOD_IO_ERROR;
+ }
+ }
return ret;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|