<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
-<h1>Light Media Scanner Data Structures</h1>Here are the data structures with brief descriptions:<table>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structcinfo.html">cinfo</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structfds.html">fds</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structlms.html">lms</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structlms__video__info.html">lms_video_info</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structparser.html">parser</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structpinfo.html">pinfo</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structsinfo.html">sinfo</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
-<h1>Light Media Scanner Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_V">V</a></div><p>
+<div class="contents">
+<h1>Data Structure Index</h1><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_V">V</a></div><p>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table>
-</td><td><a class="el" href="structlms__file__info.html">lms_file_info</a> </td><td><a class="el" href="structparser.html">parser</a> </td></tr><tr><td><a class="el" href="structlms__audio__info.html">lms_audio_info</a> </td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
-</td><td><a class="el" href="structpinfo.html">pinfo</a> </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
-</td><td><a class="el" href="structlms__gps__info.html">lms_gps_info</a> </td><td><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> </td></tr><tr><td><a class="el" href="structlms__context.html">lms_context</a> </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
-</td><td><a class="el" href="structlms__plugin.html">lms_plugin</a> </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="structlms__image__info.html">lms_image_info</a> </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structlms__db__cache.html">lms_db_cache</a> </td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table>
+</td><td><a class="el" href="structfds.html">fds</a> </td><td><a class="el" href="structparser.html">parser</a> </td></tr><tr><td><a class="el" href="structlms__audio__info.html">lms_audio_info</a> </td><td><a class="el" href="structlms__file__info.html">lms_file_info</a> </td><td><a class="el" href="structpinfo.html">pinfo</a> </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
+</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
+</td><td><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> </td></tr><tr><td><a class="el" href="structcinfo.html">cinfo</a> </td><td><a class="el" href="structlms__gps__info.html">lms_gps_info</a> </td><td><a class="el" href="structlms__plugin.html">lms_plugin</a> </td></tr><tr><td><a class="el" href="structlms__context.html">lms_context</a> </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
+</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
+</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
+</td><td><a class="el" href="structlms__image__info.html">lms_image_info</a> </td><td><a class="el" href="structsinfo.html">sinfo</a> </td></tr><tr><td><a class="el" href="structlms__db__cache.html">lms_db_cache</a> </td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table>
</td><td><a class="el" href="structlms__string__size.html">lms_string_size</a> </td></tr><tr><td><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> </td><td><a class="el" href="structlms.html">lms</a> </td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> V </div></td></tr></table>
</td></tr><tr><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> F </div></td></tr></table>
</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> P </div></td></tr></table>
-</td><td><a class="el" href="structlms__video__info.html">lms_video_info</a> </td></tr><tr><td><a class="el" href="structfds.html">fds</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_V">V</a></div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</td><td><a class="el" href="structlms__video__info.html">lms_video_info</a> </td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_V">V</a></div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
font-family: Geneva, Arial, Helvetica, sans-serif;
}
BODY,TD {
- font-size: 90%;
+ font-size: 90%;
}
H1 {
text-align: center;
- font-size: 160%;
+ font-size: 160%;
}
H2 {
- font-size: 120%;
+ font-size: 120%;
}
H3 {
- font-size: 100%;
+ font-size: 100%;
+}
+CAPTION {
+ font-weight: bold
}
-CAPTION { font-weight: bold }
DIV.qindex {
width: 100%;
background-color: #e8eef2;
padding: 2px;
line-height: 140%;
}
-DIV.nav {
+DIV.navpath {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
background-color: #6666cc;
color: #ffffff;
}
-A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
-A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
-A.codeRef:link { font-weight: normal; color: #0000FF}
-A.codeRef:visited { font-weight: normal; color: #0000FF}
-A:hover { text-decoration: none; background-color: #f2f2ff }
-DL.el { margin-left: -1cm }
+A.qindexHL:visited {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff
+}
+A.el {
+ text-decoration: none;
+ font-weight: bold
+}
+A.elRef {
+ font-weight: bold
+}
+A.code:link {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.code:visited {
+ text-decoration: none;
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:link {
+ font-weight: normal;
+ color: #0000FF
+}
+A.codeRef:visited {
+ font-weight: normal;
+ color: #0000FF
+}
+A:hover {
+ text-decoration: none;
+ background-color: #f2f2ff
+}
+DL.el {
+ margin-left: -1cm
+}
.fragment {
font-family: monospace, fixed;
font-size: 95%;
padding-top: 4px;
padding-bottom: 4px;
}
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+DIV.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
DIV.groupHeader {
margin-left: 16px;
margin-bottom: 6px;
font-weight: bold;
}
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+DIV.groupText {
+ margin-left: 16px;
+ font-style: italic;
+ font-size: 90%
+}
BODY {
background: white;
color: black;
border: 1px solid #CCCCCC;
}
TR.memlist {
- background-color: #f0f0f0;
+ background-color: #f0f0f0;
+}
+P.formulaDsp {
+ text-align: center;
+}
+IMG.formulaDsp {
+}
+IMG.formulaInl {
+ vertical-align: middle;
}
-P.formulaDsp { text-align: center; }
-IMG.formulaDsp { }
-IMG.formulaInl { vertical-align: middle; }
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
+SPAN.vhdldigit { color: #ff00ff }
+SPAN.vhdlchar { color: #000000 }
+SPAN.vhdlkeyword { color: #700070 }
+SPAN.vhdllogic { color: #ff0000 }
+
.mdescLeft {
- padding: 0px 8px 4px 8px;
+ padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
margin: 0px;
}
.mdescRight {
- padding: 0px 8px 4px 8px;
+ padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
- color: #606060;
+ color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
-.search { color: #003399;
- font-weight: bold;
+.search {
+ color: #003399;
+ font-weight: bold;
}
FORM.search {
- margin-bottom: 0px;
- margin-top: 0px;
+ margin-bottom: 0px;
+ margin-top: 0px;
}
-INPUT.search { font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
+INPUT.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
}
-TD.tiny { font-size: 75%;
+TD.tiny {
+ font-size: 75%;
}
a {
color: #1A41A8;
a:visited {
color: #2A3798;
}
-.dirtab { padding: 4px;
- border-collapse: collapse;
- border: 1px solid #84b0c7;
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #84b0c7;
}
-TH.dirtab { background: #e8eef2;
- font-weight: bold;
+TH.dirtab {
+ background: #e8eef2;
+ font-weight: bold;
}
-HR { height: 1px;
- border: none;
- border-top: 1px solid black;
+HR {
+ height: 1px;
+ border: none;
+ border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
- font-size: 80%;
- color: #606060;
- font-weight: normal;
+ font-size: 80%;
+ color: #606060;
+ font-weight: normal;
+ margin-left: 3px;
}
.memnav {
- background-color: #e8eef2;
- border: 1px solid #84b0c7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
+ background-color: #e8eef2;
+ border: 1px solid #84b0c7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
}
.memitem {
- padding: 4px;
- background-color: #eef3f5;
- border-width: 1px;
- border-style: solid;
- border-color: #dedeee;
- -moz-border-radius: 8px 8px 8px 8px;
+ padding: 4px;
+ background-color: #eef3f5;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #dedeee;
+ -moz-border-radius: 8px 8px 8px 8px;
}
.memname {
- white-space: nowrap;
- font-weight: bold;
+ white-space: nowrap;
+ font-weight: bold;
}
.memdoc{
- padding-left: 10px;
+ padding-left: 10px;
}
.memproto {
- background-color: #d5e1e8;
- width: 100%;
- border-width: 1px;
- border-style: solid;
- border-color: #84b0c7;
- font-weight: bold;
- -moz-border-radius: 8px 8px 8px 8px;
+ background-color: #d5e1e8;
+ width: 100%;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #84b0c7;
+ font-weight: bold;
+ -moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
- text-align: right;
+ text-align: right;
}
.paramtype {
- white-space: nowrap;
+ white-space: nowrap;
}
.paramname {
- color: #602020;
- font-style: italic;
- white-space: nowrap;
+ color: #602020;
+ font-style: italic;
+ white-space: nowrap;
}
/* End Styling for detailed member documentation */
font-family: sans-serif;
margin:0.5em;
}
-.directory { font-size: 9pt; font-weight: bold; }
-.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
-.directory > h3 { margin-top: 0; }
-.directory p { margin: 0px; white-space: nowrap; }
-.directory div { display: none; margin: 0px; }
-.directory img { vertical-align: -30%; }
+/* these are for tree view when used as main index */
+.directory {
+ font-size: 9pt;
+ font-weight: bold;
+}
+.directory h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+
+/* The following two styles can be used to replace the root node title */
+/* with an image of your choice. Simply uncomment the next two styles, */
+/* specify the name of your image and be sure to set 'height' to the */
+/* proper pixel height of your image. */
+
+/* .directory h3.swap { */
+/* height: 61px; */
+/* background-repeat: no-repeat; */
+/* background-image: url("yourimage.gif"); */
+/* } */
+/* .directory h3.swap span { */
+/* display: none; */
+/* } */
+
+.directory > h3 {
+ margin-top: 0;
+}
+.directory p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory div {
+ display: none;
+ margin: 0px;
+}
+.directory img {
+ vertical-align: -30%;
+}
+/* these are for tree view when not used as main index */
+.directory-alt {
+ font-size: 100%;
+ font-weight: bold;
+}
+.directory-alt h3 {
+ margin: 0px;
+ margin-top: 1em;
+ font-size: 11pt;
+}
+.directory-alt > h3 {
+ margin-top: 0;
+}
+.directory-alt p {
+ margin: 0px;
+ white-space: nowrap;
+}
+.directory-alt div {
+ display: none;
+ margin: 0px;
+}
+.directory-alt img {
+ vertical-align: -30%;
+}
+
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="files.html"><span>File List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>Light Media Scanner File List</h1>Here is a list of all files with brief descriptions:<table>
+<div class="contents">
+<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner_8c.html">lightmediascanner.c</a> <a href="lightmediascanner_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner_8h.html">lightmediascanner.h</a> <a href="lightmediascanner_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__charset__conv_8c.html">lightmediascanner_charset_conv.c</a> <a href="lightmediascanner__charset__conv_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__utils_8c.html">lightmediascanner_utils.c</a> <a href="lightmediascanner__utils_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a> <a href="lightmediascanner__utils_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_r"><span>r</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all struct and union fields with links to the structures/unions they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>altitude
: <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info</a>
<li>artist
-: <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
-, <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+: <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+, <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
, <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
</ul>
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
: <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info</a>
</ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>cb
+: <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms</a>
<li>child
: <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo</a>
<li>close
: <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin</a>
+<li>commit_counter
+: <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo</a>
<li>commit_interval
: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>common
+: <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo</a>
+, <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo</a>
<li>cs_conv
-: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
-, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+: <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+, <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
</ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>data
: <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry</a>
+, <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms</a>
<li>date
: <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info</a>
<li>db
: <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry</a>
, <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context</a>
+, <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo</a>
<li>db_path
: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
<li>dl_handle
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>finish
: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+<li>free_data
+: <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms</a>
</ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>genre
<li>len
: <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size</a>
<li>lms
-: <a class="el" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">pinfo</a>
+: <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo</a>
<li>longitude
: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
</ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>parse
: <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin</a>
+<li>parser_match
+: <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo</a>
<li>parsers
: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
<li>path
: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
<li>poll
: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+<li>progress
+: <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms</a>
</ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>r
<li>setup
: <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin</a>
<li>size
-: <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
-, <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+: <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+, <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
<li>slave
: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
<li>slave_timeout
: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
<li>start
: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</a>
+<li>stop_processing
+: <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms</a>
<li>str
: <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size</a>
</ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>title
: <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
, <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info</a>
, <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info</a>
-, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
<li>trackno
: <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info</a>
</ul>
<li>width
: <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_r"><span>r</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_t"><span>t</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_b"><span>b</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_h"><span>h</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>altitude
: <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info</a>
<li>artist
-: <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
-, <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+: <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info</a>
+, <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info</a>
, <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
</ul>
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
: <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info</a>
</ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>cb
+: <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms</a>
<li>child
: <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo</a>
<li>close
: <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin</a>
+<li>commit_counter
+: <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo</a>
<li>commit_interval
: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>common
+: <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo</a>
+, <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo</a>
<li>cs_conv
-: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
-, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+: <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</a>
+, <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
</ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>data
: <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry</a>
+, <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms</a>
<li>date
: <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info</a>
<li>db
: <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry</a>
, <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context</a>
+, <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo</a>
<li>db_path
: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
<li>dl_handle
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>finish
: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+<li>free_data
+: <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms</a>
</ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>genre
<li>len
: <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size</a>
<li>lms
-: <a class="el" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">pinfo</a>
+: <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo</a>
<li>longitude
: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
</ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>parse
: <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin</a>
+<li>parser_match
+: <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo</a>
<li>parsers
: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
<li>path
: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
<li>poll
: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+<li>progress
+: <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms</a>
</ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>r
<li>setup
: <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin</a>
<li>size
-: <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
-, <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+: <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache</a>
+, <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info</a>
<li>slave
: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
<li>slave_timeout
: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
<li>start
: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</a>
+<li>stop_processing
+: <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms</a>
<li>str
: <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size</a>
</ul>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>title
: <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
, <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info</a>
, <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info</a>
-, <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info</a>
<li>trackno
: <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info</a>
</ul>
<li>width
: <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
<li>_LIGHTMEDIASCANNER_UTILS_H_
: <a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">lightmediascanner_utils.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li class="current"><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li class="current"><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
, <a class="el" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_db.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_charset_conv.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li class="current"><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li class="current"><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>check_row_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">lightmediascanner_private.h</a>
<li>COMM_FINFO_FLAG_OUTDATED
: <a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">lightmediascanner_check.c</a>
<li>lms_charset_add()
-: <a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lightmediascanner.c</a>
-, <a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lightmediascanner.c</a>
<li>lms_charset_conv()
: <a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lightmediascanner_charset_conv.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lightmediascanner_charset_conv.c</a>
: <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lightmediascanner_charset_conv.c</a>
, <a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_check()
-: <a class="el" href="group__LMS__CHARSET.html#g3d6c281f7b3cf9fb0c299c0abe03f681">lightmediascanner_charset_conv.h</a>
+: <a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lightmediascanner_charset_conv.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lightmediascanner_charset_conv.c</a>
<li>lms_charset_conv_del()
-: <a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lightmediascanner_charset_conv.h</a>
-, <a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lightmediascanner_charset_conv.c</a>
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_force()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_free()
: <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.c</a>
, <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_new()
-: <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.c</a>
-, <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.h</a>
+: <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_new_full()
+: <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_t
: <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lightmediascanner_charset_conv.h</a>
<li>lms_charset_del()
: <a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lightmediascanner.c</a>
, <a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lightmediascanner.h</a>
<li>lms_check()
-: <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
-, <a class="el" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
+<li>lms_check_single_process()
+: <a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lightmediascanner.h</a>
<li>lms_close_pipes()
-: <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
-, <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
+: <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
<li>lms_create_pipes()
: <a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lightmediascanner_process.c</a>
, <a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lightmediascanner_private.h</a>
: <a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lightmediascanner_process.c</a>
, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lightmediascanner_private.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li class="current"><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li class="current"><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>DEFAULT_SLAVE_TIMEOUT
: <a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">lightmediascanner.c</a>
<li>lms_db_audio_add()
-: <a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lightmediascanner_db.h</a>
-, <a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lightmediascanner_db_audio.c</a>
+: <a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lightmediascanner_db.h</a>
<li>lms_db_audio_free()
: <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db_audio.c</a>
, <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db.h</a>
<li>lms_db_audio_new()
-: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
-, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
<li>lms_db_audio_start()
-: <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db.h</a>
-, <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db_audio.c</a>
+: <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db_audio.c</a>
+, <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db.h</a>
<li>lms_db_audio_t
: <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lightmediascanner_db.h</a>
<li>lms_db_begin_transaction()
: <a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lightmediascanner_db_private.h</a>
<li>lms_db_cache_add()
-: <a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lightmediascanner_db_private.h</a>
<li>lms_db_cache_del()
: <a class="el" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#e3e18958c74ba988c2bfdf77a3793ceb">lightmediascanner_db_private.h</a>
<li>lms_db_cache_get()
-: <a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt()
-: <a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_begin_transaction()
-: <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_delete_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_end_transaction()
-: <a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_get_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_get_files()
-: <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_insert_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_set_file_dtime()
-: <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_update_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
<li>lms_db_create_core_tables_if_required()
: <a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lightmediascanner_db_private.h</a>
<li>lms_db_create_trigger_if_not_exists()
-: <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
<li>lms_db_delete_file_info()
: <a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lightmediascanner_db_common.c</a>
<li>lms_db_end_transaction()
-: <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
<li>lms_db_finalize_stmt()
-: <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
<li>lms_db_get_file_info()
: <a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lightmediascanner_db_common.c</a>
<li>lms_db_get_files()
-: <a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lightmediascanner_db_private.h</a>
<li>lms_db_image_add()
: <a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lightmediascanner_db_image.c</a>
, <a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lightmediascanner_db.h</a>
<li>lms_db_image_free()
-: <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db_image.c</a>
-, <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db_image.c</a>
<li>lms_db_image_new()
: <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db.h</a>
, <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db_image.c</a>
<li>lms_db_image_start()
-: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
-, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
<li>lms_db_image_t
: <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lightmediascanner_db.h</a>
<li>lms_db_insert_file_info()
: <a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lightmediascanner_db_playlist.c</a>
, <a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lightmediascanner_db.h</a>
<li>lms_db_playlist_free()
-: <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db_playlist.c</a>
-, <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db_playlist.c</a>
<li>lms_db_playlist_new()
-: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
-, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
<li>lms_db_playlist_start()
: <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db_playlist.c</a>
, <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db.h</a>
: <a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lightmediascanner_db_private.h</a>
<li>lms_db_set_file_dtime()
-: <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
<li>lms_db_table_update()
: <a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lightmediascanner_db_private.h</a>
: <a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lightmediascanner_db_private.h</a>
<li>lms_db_table_updater_t
-: <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lightmediascanner_db_private.h</a>
<li>lms_db_table_version_get()
: <a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lightmediascanner_db_private.h</a>
: <a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lightmediascanner_db_common.c</a>
<li>lms_db_update_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
<li>lms_db_video_add()
: <a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lightmediascanner_db_video.c</a>
, <a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lightmediascanner_db.h</a>
<li>lms_db_video_t
: <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lightmediascanner_db.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li class="current"><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li class="current"><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
: <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">lightmediascanner_process.c</a>
<li>lms_free()
-: <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.c</a>
-, <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.h</a>
+: <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lightmediascanner.c</a>
+<li>lms_free_callback_t
+: <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li class="current"><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li class="current"><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
: <a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner_charset_conv.h</a>
<li>GNUC_NON_NULL
-: <a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_charset_conv.h</a>
+: <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_charset_conv.h</a>
, <a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db.h</a>
-, <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_private.h</a>
-, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
<li>GNUC_NULL_TERMINATED
: <a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">lightmediascanner.h</a>
<li>GNUC_PURE
<li>GNUC_UNUSED
: <a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">lightmediascanner.h</a>
<li>GNUC_WARN_UNUSED_RESULT
-: <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
-, <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
<li>lms_get_commit_interval()
-: <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.c</a>
-, <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.h</a>
+: <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lightmediascanner.c</a>
<li>lms_get_db_path()
-: <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.h</a>
-, <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.c</a>
+: <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.c</a>
+, <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.h</a>
<li>lms_get_slave_timeout()
: <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li class="current"><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li class="current"><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
: <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li class="current"><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LMS_ARRAY_SIZE
: <a class="el" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">lightmediascanner_utils.h</a>
+<li>LMS_PROGRESS_STATUS_DELETED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_COMM
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_PARSE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_KILLED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_PROCESSED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_UP_TO_DATE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">lightmediascanner.h</a>
<li>LMS_STATIC_STRING_SIZE
: <a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">lightmediascanner_utils.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li class="current"><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li class="current"><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
: <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li class="current"><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li class="current"><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
: <a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lightmediascanner.c</a>
, <a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lightmediascanner_private.h</a>
<li>lms_parser_find_and_add()
-: <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
-, <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
<li>lms_parsers_check_using()
: <a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lightmediascanner_process.c</a>
: <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lightmediascanner_process.c</a>
<li>lms_parsers_run()
-: <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
<li>lms_parsers_setup()
-: <a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lightmediascanner_private.h</a>
-, <a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lightmediascanner_process.c</a>
+: <a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lightmediascanner_private.h</a>
<li>lms_parsers_start()
: <a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lightmediascanner_process.c</a>
<li>lms_plugin_close_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lightmediascanner_plugin.h</a>
<li>lms_plugin_finish_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lightmediascanner_plugin.h</a>
<li>lms_plugin_match_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lightmediascanner_plugin.h</a>
<li>lms_plugin_parse_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lightmediascanner_plugin.h</a>
<li>lms_plugin_setup_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lightmediascanner_plugin.h</a>
<li>lms_plugin_start_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lightmediascanner_plugin.h</a>
<li>lms_plugin_t
: <a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lightmediascanner.h</a>
<li>lms_process()
: <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lightmediascanner_process.c</a>
, <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lightmediascanner.h</a>
+<li>lms_process_single_process()
+: <a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lightmediascanner.h</a>
+<li>lms_progress_callback_t
+: <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lightmediascanner.h</a>
+<li>lms_progress_status_t
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lightmediascanner.h</a>
<li>PATH_SIZE
: <a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">lightmediascanner_private.h</a>
+<li>process_file_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">lightmediascanner_private.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li class="current"><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
: <a class="el" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">lightmediascanner_process.c</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li class="current"><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li class="current"><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>lms_set_commit_interval()
: <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.h</a>
+<li>lms_set_progress_callback()
+: <a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lightmediascanner.c</a>
<li>lms_set_slave_timeout()
: <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.h</a>
+<li>lms_stop_processing()
+: <a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lightmediascanner_process.c</a>
+<li>lms_string_size_strip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lightmediascanner_utils.h</a>
<li>lms_strstrip()
: <a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lightmediascanner_utils.c</a>
, <a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lightmediascanner_utils.h</a>
+<li>lms_strstrip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lightmediascanner_utils.h</a>
<li>sqlite3_clear_bindings()
: <a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">lightmediascanner_db_common.c</a>
<li>sqlite3_prepare_v2()
: <a class="el" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">lightmediascanner_db_common.c</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li class="current"><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li class="current"><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
<li>lms_t
: <a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html#index__"><span>_</span></a></li>
+ <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
+ <li class="current"><a href="globals_0x77.html#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html#index__"><span>_</span></a></li>
- <li><a href="globals_0x61.html#index_a"><span>a</span></a></li>
- <li><a href="globals_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="globals_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="globals_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="globals_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="globals_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="globals_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="globals_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="globals_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="globals_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="globals_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="globals_0x74.html#index_t"><span>t</span></a></li>
- <li class="current"><a href="globals_0x77.html#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
<p>
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>lms_which_extension()
: <a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lightmediascanner_utils.c</a>
-, <a class="el" href="lightmediascanner__utils_8h.html#92c63007e7d04f626cafc6eef48f7022">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lightmediascanner_utils.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index__"><span>_</span></a></li>
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="#index__"><span>_</span></a></li>
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
<p>
<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
: <a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">lightmediascanner_charset_conv.h</a>
<li>GNUC_NON_NULL
-: <a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_charset_conv.h</a>
, <a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db.h</a>
-, <a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner.h</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">lightmediascanner_utils.h</a>
<li>GNUC_NULL_TERMINATED
: <a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">lightmediascanner.h</a>
<li>GNUC_PURE
<li>GNUC_UNUSED
: <a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">lightmediascanner.h</a>
<li>GNUC_WARN_UNUSED_RESULT
-: <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
-, <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner_charset_conv.h</a>
+, <a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">lightmediascanner.h</a>
</ul>
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
<li>LMS_ARRAY_SIZE
<li>PATH_SIZE
: <a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">lightmediascanner_private.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+
+<p>
+<ul>
+<li>lms_progress_status_t
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: Data Fields</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+
+<p>
+<ul>
+<li>LMS_PROGRESS_STATUS_DELETED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_COMM
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_ERROR_PARSE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_KILLED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_PROCESSED
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">lightmediascanner.h</a>
+<li>LMS_PROGRESS_STATUS_UP_TO_DATE
+: <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">lightmediascanner.h</a>
+</ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
+</body>
+</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_f"><span>f</span></a></li>
+ <li><a href="#index_g"><span>g</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_r"><span>r</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ </ul>
+ </div>
</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html"><span>All</span></a></li>
- <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_w"><span>w</span></a></li>
- </ul>
-</div>
-
-<p>
+<div class="contents">
<p>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
: <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lightmediascanner_charset_conv.c</a>
, <a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_check()
-: <a class="el" href="group__LMS__CHARSET.html#g3d6c281f7b3cf9fb0c299c0abe03f681">lightmediascanner_charset_conv.h</a>
+: <a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lightmediascanner_charset_conv.h</a>
, <a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lightmediascanner_charset_conv.c</a>
<li>lms_charset_conv_del()
: <a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lightmediascanner_charset_conv.c</a>
, <a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lightmediascanner_charset_conv.h</a>
+<li>lms_charset_conv_force()
+: <a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_free()
-: <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.h</a>
-, <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.c</a>
+: <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lightmediascanner_charset_conv.h</a>
<li>lms_charset_conv_new()
: <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.h</a>
, <a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lightmediascanner_charset_conv.c</a>
+<li>lms_charset_conv_new_full()
+: <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.c</a>
+, <a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lightmediascanner_charset_conv.h</a>
<li>lms_charset_del()
-: <a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lightmediascanner.c</a>
-, <a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lightmediascanner.c</a>
<li>lms_check()
-: <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
-, <a class="el" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lightmediascanner_check.c</a>
+<li>lms_check_single_process()
+: <a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lightmediascanner_check.c</a>
<li>lms_close_pipes()
-: <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lightmediascanner_process.c</a>
<li>lms_create_pipes()
-: <a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lightmediascanner_private.h</a>
-, <a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lightmediascanner_process.c</a>
+: <a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lightmediascanner_private.h</a>
<li>lms_create_slave()
: <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lightmediascanner_process.c</a>
: <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db_audio.c</a>
, <a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lightmediascanner_db.h</a>
<li>lms_db_audio_new()
-: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
-, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lightmediascanner_db_audio.c</a>
<li>lms_db_audio_start()
: <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db_audio.c</a>
, <a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lightmediascanner_db.h</a>
: <a class="el" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">lightmediascanner_db_private.h</a>
<li>lms_db_bind_blob()
-: <a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lightmediascanner_db_private.h</a>
<li>lms_db_bind_double()
-: <a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lightmediascanner_db_private.h</a>
<li>lms_db_bind_int()
: <a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lightmediascanner_db_common.c</a>
<li>lms_db_bind_int64()
-: <a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lightmediascanner_db_private.h</a>
<li>lms_db_bind_int64_or_null()
-: <a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lightmediascanner_db_private.h</a>
<li>lms_db_bind_text()
-: <a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lightmediascanner_db_private.h</a>
<li>lms_db_cache_add()
: <a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lightmediascanner_db_private.h</a>
: <a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_begin_transaction()
-: <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
-, <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lightmediascanner_db_common.c</a>
<li>lms_db_compile_stmt_delete_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_end_transaction()
: <a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_get_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_get_files()
-: <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_insert_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_set_file_dtime()
-: <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lightmediascanner_db_private.h</a>
<li>lms_db_compile_stmt_update_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lightmediascanner_db_private.h</a>
<li>lms_db_create_core_tables_if_required()
: <a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lightmediascanner_db_private.h</a>
<li>lms_db_create_trigger_if_not_exists()
-: <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lightmediascanner_db_private.h</a>
<li>lms_db_delete_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lightmediascanner_db_private.h</a>
<li>lms_db_end_transaction()
-: <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lightmediascanner_db_private.h</a>
<li>lms_db_finalize_stmt()
-: <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lightmediascanner_db_private.h</a>
<li>lms_db_get_file_info()
-: <a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lightmediascanner_db_private.h</a>
<li>lms_db_get_files()
: <a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lightmediascanner_db_private.h</a>
: <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db_image.c</a>
, <a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lightmediascanner_db.h</a>
<li>lms_db_image_new()
-: <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db_image.c</a>
-, <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lightmediascanner_db_image.c</a>
<li>lms_db_image_start()
-: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
-, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
+: <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db_image.c</a>
+, <a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lightmediascanner_db.h</a>
<li>lms_db_insert_file_info()
: <a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lightmediascanner_db_private.h</a>
: <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db_playlist.c</a>
, <a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lightmediascanner_db.h</a>
<li>lms_db_playlist_new()
-: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
-, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+: <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db_playlist.c</a>
+, <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lightmediascanner_db.h</a>
<li>lms_db_playlist_start()
-: <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db_playlist.c</a>
-, <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db.h</a>
+, <a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lightmediascanner_db_playlist.c</a>
<li>lms_db_reset_stmt()
: <a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lightmediascanner_db_private.h</a>
, <a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lightmediascanner_db_common.c</a>
<li>lms_db_set_file_dtime()
-: <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lightmediascanner_db_private.h</a>
<li>lms_db_table_update()
-: <a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lightmediascanner_db_common.c</a>
-, <a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lightmediascanner_db_common.c</a>
<li>lms_db_table_update_if_required()
-: <a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lightmediascanner_db_private.h</a>
-, <a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lightmediascanner_db_common.c</a>
+: <a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lightmediascanner_db_private.h</a>
<li>lms_db_table_version_get()
: <a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lightmediascanner_db_common.c</a>
, <a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lightmediascanner_db_private.h</a>
<li>lms_db_table_version_set()
-: <a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lightmediascanner_db_common.c</a>
-, <a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lightmediascanner_db_common.c</a>
<li>lms_db_update_file_info()
-: <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
-, <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lightmediascanner_db_common.c</a>
<li>lms_db_video_add()
-: <a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lightmediascanner_db_video.c</a>
-, <a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lightmediascanner_db.h</a>
+: <a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lightmediascanner_db_video.c</a>
<li>lms_db_video_free()
: <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db.h</a>
, <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db_video.c</a>
: <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db.h</a>
, <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db_video.c</a>
<li>lms_db_video_start()
-: <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db.h</a>
-, <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db_video.c</a>
+: <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lightmediascanner_db.h</a>
</ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>lms_finish_slave()
: <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.h</a>
, <a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lightmediascanner.c</a>
<li>lms_get_slave_timeout()
-: <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.c</a>
-, <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.h</a>
+: <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lightmediascanner.c</a>
</ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>lms_is_processing()
: <a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lightmediascanner.c</a>
, <a class="el" href="lightmediascanner_8h.html#ce55a5c9cc767b96fa6f24b77bebc7c3">lightmediascanner.h</a>
<li>lms_parser_del()
-: <a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lightmediascanner.c</a>
-, <a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lightmediascanner.c</a>
<li>lms_parser_del_int()
-: <a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lightmediascanner_private.h</a>
-, <a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lightmediascanner.c</a>
+: <a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lightmediascanner.c</a>
+, <a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lightmediascanner_private.h</a>
<li>lms_parser_find_and_add()
-: <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
-, <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lightmediascanner.h</a>
+, <a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lightmediascanner.c</a>
<li>lms_parsers_check_using()
-: <a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">lightmediascanner_process.c</a>
<li>lms_parsers_finish()
-: <a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lightmediascanner_process.c</a>
<li>lms_parsers_run()
-: <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+: <a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lightmediascanner_private.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">lightmediascanner_process.c</a>
<li>lms_parsers_setup()
: <a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lightmediascanner_process.c</a>
, <a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lightmediascanner_private.h</a>
: <a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lightmediascanner_private.h</a>
, <a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lightmediascanner_process.c</a>
<li>lms_process()
-: <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lightmediascanner_process.c</a>
-, <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lightmediascanner.h</a>
+: <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lightmediascanner_process.c</a>
+<li>lms_process_single_process()
+: <a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lightmediascanner_process.c</a>
+, <a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lightmediascanner.h</a>
</ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>lms_restart_slave()
<li>lms_set_commit_interval()
: <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lightmediascanner.h</a>
+<li>lms_set_progress_callback()
+: <a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lightmediascanner.c</a>
<li>lms_set_slave_timeout()
: <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.c</a>
, <a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lightmediascanner.h</a>
+<li>lms_stop_processing()
+: <a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lightmediascanner_process.c</a>
+<li>lms_string_size_strip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lightmediascanner_utils.h</a>
<li>lms_strstrip()
: <a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lightmediascanner_utils.c</a>
, <a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lightmediascanner_utils.h</a>
+<li>lms_strstrip_and_free()
+: <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lightmediascanner_utils.c</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lightmediascanner_utils.h</a>
<li>sqlite3_clear_bindings()
: <a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">lightmediascanner_db_common.c</a>
<li>sqlite3_prepare_v2()
<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
<li>lms_which_extension()
: <a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lightmediascanner_utils.c</a>
-, <a class="el" href="lightmediascanner__utils_8h.html#92c63007e7d04f626cafc6eef48f7022">lightmediascanner_utils.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lightmediascanner_utils.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li><a href="globals_vars.html"><span>Variables</span></a></li>
- <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<p>
<ul>
+<li>check_row_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">lightmediascanner_private.h</a>
<li>lms_charset_conv_t
: <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lightmediascanner_charset_conv.h</a>
<li>lms_db_audio_t
: <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lightmediascanner_db.h</a>
<li>lms_db_video_t
: <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lightmediascanner_db.h</a>
+<li>lms_free_callback_t
+: <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lightmediascanner.h</a>
<li>lms_plugin_close_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lightmediascanner_plugin.h</a>
<li>lms_plugin_finish_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lightmediascanner_plugin.h</a>
<li>lms_plugin_match_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lightmediascanner_plugin.h</a>
<li>lms_plugin_parse_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lightmediascanner_plugin.h</a>
<li>lms_plugin_setup_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lightmediascanner_plugin.h</a>
<li>lms_plugin_start_fn_t
-: <a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lightmediascanner_plugin.h</a>
+: <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lightmediascanner_plugin.h</a>
<li>lms_plugin_t
: <a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lightmediascanner.h</a>
+<li>lms_progress_callback_t
+: <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lightmediascanner.h</a>
+<li>process_file_callback_t
+: <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">lightmediascanner_private.h</a>
<li>lms_t
: <a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lightmediascanner.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
- <li><a href="globals_type.html"><span>Typedefs</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ <li><a href="globals_defs.html"><span>Defines</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<p>
<ul>
<li>lms_db_table_updater_t
-: <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lightmediascanner_db_private.h</a>
+: <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lightmediascanner_db_private.h</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
digraph G
{
bgcolor="transparent";
- edge [fontname="FreeSans.ttf",fontsize=10,labelfontname="FreeSans.ttf",labelfontsize=10];
- node [fontname="FreeSans.ttf",fontsize=10,shape=record];
- Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",fillcolor="grey75",style="filled" fontcolor="black"];
- Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classPublicBase.html"];
- Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="red",URL="$classTruncated.html"];
- Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classProtectedBase.html"];
- Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classPrivateBase.html"];
- Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="grey75"];
- Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans.ttf"];
- Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classTempl.html"];
- Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans.ttf"];
- Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classTempl.html"];
- Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans.ttf"];
- Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans.ttf",color="black",URL="$classUsed.html"];
+ edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
+ node [fontname="FreeSans",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
}
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
<span class="keyword">class </span>Invisible { };
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>User-API</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00480">480</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00145">lms_charset_conv_add()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00451">451</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00098">lms_charset_conv_add()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png" border="0" usemap="#group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png" border="0" usemap="#group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph_map" alt=""></center>
<map name="group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph_map">
-<area shape="rect" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000" title="lms_charset_conv_add" alt="" coords="165,5,309,32"></map>
+<area shape="rect" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000" title="lms_charset_conv_add" alt="" coords="189,5,363,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00503">503</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00211">lms_charset_conv_del()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00474">474</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">lms::cs_conv</a>, and <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00164">lms_charset_conv_del()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png" border="0" usemap="#group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png" border="0" usemap="#group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph_map" alt=""></center>
<map name="group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph_map">
-<area shape="rect" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4" title="lms_charset_conv_del" alt="" coords="164,5,303,32"></map>
+<area shape="rect" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4" title="lms_charset_conv_del" alt="" coords="185,5,353,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00157">157</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00157">157</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00068">lms::db_path</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00067">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00604">lms_create_slave()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png" border="0" usemap="#group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png" border="0" usemap="#group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph_map" alt=""></center>
<map name="group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph_map">
-<area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="124,5,268,32"></map>
+<area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="135,5,311,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>(unsigned int)-1 on error, value otherwise. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00404">404</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00070">lms::commit_interval</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00433">433</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g4098d31de667a895095fc8d4d9bc10c0"></a><!-- doxytag: member="lightmediascanner.c::lms_get_db_path" ref="g4098d31de667a895095fc8d4d9bc10c0" args="(const lms_t *lms)" -->
<td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>path to database. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00340">340</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00068">lms::db_path</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00369">369</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g973c6c7b66f4fdd6f4f776a36e742d33"></a><!-- doxytag: member="lightmediascanner.c::lms_get_slave_timeout" ref="g973c6c7b66f4fdd6f4f776a36e742d33" args="(const lms_t *lms)" -->
<td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>-1 on error or time in milliseconds otherwise. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00362">362</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00069">lms::slave_timeout</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00391">391</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g8c594bed751d504965b5cc0c7e93fb71"></a><!-- doxytag: member="lightmediascanner.c::lms_is_processing" ref="g8c594bed751d504965b5cc0c7e93fb71" args="(const lms_t *lms)" -->
<td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
-Checks if Light Media Scanner is being used in a processing operation lile <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process()</a> or <a class="el" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lms_check()</a>.<p>
+Checks if Light Media Scanner is being used in a processing operation lile <a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process()</a> or <a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check()</a>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em> </td><td>previously allocated Light Media Scanner instance.</td></tr>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if it is processing, 0 if it's not, -1 on error. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00321">321</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00350">350</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g982939bdd2aeb664b5cf7a50b67c1030"></a><!-- doxytag: member="lightmediascanner.c::lms_new" ref="g982939bdd2aeb664b5cf7a50b67c1030" args="(const char *db_path)" -->
<td class="paramtype">const char * </td>
<td class="paramname"> <em>db_path</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>allocated data on success or NULL on failure. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00119">119</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00079">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00080">lms::db_path</a>, <a class="el" href="lightmediascanner_8c-source.html#l00035">DEFAULT_COMMIT_INTERVAL</a>, <a class="el" href="lightmediascanner_8c-source.html#l00034">DEFAULT_SLAVE_TIMEOUT</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">lms_charset_conv_new()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00119">119</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00070">lms::commit_interval</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00067">lms::cs_conv</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00068">lms::db_path</a>, <a class="el" href="lightmediascanner_8c-source.html#l00035">DEFAULT_COMMIT_INTERVAL</a>, <a class="el" href="lightmediascanner_8c-source.html#l00034">DEFAULT_SLAVE_TIMEOUT</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00067">lms_charset_conv_free()</a>, <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00026">lms_charset_conv_new()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00069">lms::slave_timeout</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png" border="0" usemap="#group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png" border="0" usemap="#group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph_map" alt=""></center>
<map name="group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph_map">
-<area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="124,5,268,32"><area shape="rect" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab" title="lms_charset_conv_new" alt="" coords="123,56,269,83"></map>
+<area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="135,5,311,32"><area shape="rect" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab" title="lms_charset_conv_new" alt="" coords="135,56,311,83"><area shape="rect" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15" title="lms_charset_conv_new_full" alt="" coords="361,56,564,83"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success the LMS handle to plugin is returned, NULL on error. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00190">190</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00235">lms_parser_find_and_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00219">219</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00264">lms_parser_find_and_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g1da5e5f834e0289ea49a0fbc2280feda"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_del" ref="g1da5e5f834e0289ea49a0fbc2280feda" args="(lms_t *lms, lms_plugin_t *handle)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00318">318</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner_8c-source.html#l00278">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00289">289</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>, <a class="el" href="lightmediascanner_8c-source.html#l00249">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png" border="0" usemap="#group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png" border="0" usemap="#group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph_map" alt=""></center>
<map name="group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph_map">
-<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="159,5,281,32"></map>
+<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="175,5,319,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success the LMS handle to plugin is returned, NULL on error. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00264">264</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner_8c-source.html#l00219">lms_parser_add()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00073">parser::so_path</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00235">235</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner_8c-source.html#l00190">lms_parser_add()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00061">parser::so_path</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png" border="0" usemap="#group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png" border="0" usemap="#group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph_map" alt=""></center>
<map name="group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph_map">
-<area shape="rect" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588" title="lms_parser_add" alt="" coords="215,5,319,32"></map>
+<area shape="rect" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588" title="lms_parser_add" alt="" coords="241,5,364,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</table>
</dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00427">427</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00070">lms::commit_interval</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00456">456</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00087">lms::commit_interval</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g68ac6273965bdeb25795dd4c50777b4e"></a><!-- doxytag: member="lightmediascanner.c::lms_set_slave_timeout" ref="g68ac6273965bdeb25795dd4c50777b4e" args="(lms_t *lms, int ms)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</table>
</dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00382">382</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00069">lms::slave_timeout</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00411">411</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00081">lms::slave_timeout</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4" title="lms_charset_conv_del" alt="" coords="164,5,303,32">
+<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4" title="lms_charset_conv_del" alt="" coords="185,5,353,32">
-741864e5ef35480d64dc8345e472b712
\ No newline at end of file
+f2d173def87bbc8d642f52c6e4d3c06b
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="159,5,281,32">
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="175,5,319,32">
-ebac3ba08ff3018fd396ac6b1eaa0c0f
\ No newline at end of file
+ad1e5cfaa97a4dfa011ec76283699c90
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000" title="lms_charset_conv_add" alt="" coords="165,5,309,32">
+<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000" title="lms_charset_conv_add" alt="" coords="189,5,363,32">
-37edee99cb66d3d72d36c490a30bcf2e
\ No newline at end of file
+3b337cc9180f45e3b77f4c54a137306a
\ No newline at end of file
-<area shape="rect" href="$group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588" title="lms_parser_add" alt="" coords="215,5,319,32">
+<area shape="rect" href="$group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588" title="lms_parser_add" alt="" coords="241,5,364,32">
-ba12f4bd6c9bfde5afd2da8e3efd1c1b
\ No newline at end of file
+bd0969a223c80143d96da294a1c8c164
\ No newline at end of file
-<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="124,5,268,32">
-<area shape="rect" href="$group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab" title="lms_charset_conv_new" alt="" coords="123,56,269,83">
+<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="135,5,311,32">
+<area shape="rect" href="$group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab" title="lms_charset_conv_new" alt="" coords="135,56,311,83">
+<area shape="rect" href="$group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15" title="lms_charset_conv_new_full" alt="" coords="361,56,564,83">
-8ca1d52d09150968d48d612cb14964f6
\ No newline at end of file
+471c858c096310f04e3d53da9c3d7a98
\ No newline at end of file
-<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="124,5,268,32">
+<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="135,5,311,32">
-1c8005cea026be0e838fc5c01fe19dc0
\ No newline at end of file
+cc9aa8f5db5f5998fe3ec829a264e25a
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>Charset Conversion</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_charset_conv </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_charset_conv </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) GNUC_NON_NULL(1)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br>
-int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g3d6c281f7b3cf9fb0c299c0abe03f681">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
+int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
-<a class="anchor" name="g3d6c281f7b3cf9fb0c299c0abe03f681"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_check" ref="g3d6c281f7b3cf9fb0c299c0abe03f681" args="(lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1" -->
+<a class="anchor" name="gbc8903e67c3c7eefa902cbb2bd5e3338"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_check" ref="gbc8903e67c3c7eefa902cbb2bd5e3338" args="(lms_charset_conv_t *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">API int API int API int API int lms_charset_conv_check </td>
+ <td class="memname">API int API int API int API int API int lms_charset_conv_check </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td>
<td class="paramname"> <em>lcc</em>, </td>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a610040a6380c745277effc5c4c9112"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_force" ref="g9a610040a6380c745277effc5c4c9112" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API int API int API int API int lms_charset_conv_force </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td>
+ <td class="paramname"> <em>lcc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char ** </td>
+ <td class="paramname"> <em>p_str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int * </td>
+ <td class="paramname"> <em>p_len</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td>
<td class="paramname"> <em>lcc</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</table>
</dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00112">112</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g0120c222a55e6d7d9bb24300300561ab"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_new" ref="g0120c222a55e6d7d9bb24300300561ab" args="(void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT" -->
<td class="paramtype">void </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
Conversion tool will try to convert provided strings to UTF-8, just need to register known charsets with <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add()</a> and then call <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv()</a>.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>newly allocated conversion tool or NULL on error. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">101</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00047">lms_charset_conv_new_full()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00026">26</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph.png" border="0" usemap="#group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph_map" alt=""></center>
+<map name="group__LMS__CHARSET_g0120c222a55e6d7d9bb24300300561ab_cgraph_map">
+<area shape="rect" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15" title="lms_charset_conv_new_full" alt="" coords="233,5,436,32"></map>
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="g893421821eacaa0fd2020c872361af15"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_new_full" ref="g893421821eacaa0fd2020c872361af15" args="(int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* lms_charset_conv_new_full </td>
+ <td>(</td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>use_check</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int </td>
+ <td class="paramname"> <em>use_fallback</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+Create a new charset conversion tool controlling its behavior.<p>
+Conversion tool will try to convert provided strings to UTF-8, just need to register known charsets with <a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add()</a> and then call <a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv()</a>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>newly allocated conversion tool or NULL on error. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00047">47</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00101">lms_charset_conv_new()</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<area shape="rect" href="$group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15" title="lms_charset_conv_new_full" alt="" coords="233,5,436,32">
--- /dev/null
+e4e46fc92dd867986635c45d243a375a
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>DataBase-API</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_image </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_image </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_audio </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_audio </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_video </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_video </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_playlist </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_playlist </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00097">97</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00097">97</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="gf09fb00e8cf6c7d5f76f257ecdea11a6"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_t" ref="gf09fb00e8cf6c7d5f76f257ecdea11a6" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00078">78</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00078">78</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="g9901260afad69e602336a4e567e386c3"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_t" ref="g9901260afad69e602336a4e567e386c3" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00125">125</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00125">125</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="gc2e0d2164f90e1ad3c78e05a4d341ec8"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_t" ref="gc2e0d2164f90e1ad3c78e05a4d341ec8" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> * </td>
<td class="paramname"> <em>lda</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">402</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00352">352</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00247">lms_db_audio_new()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png" border="0" usemap="#group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png" border="0" usemap="#group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="188,5,308,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="180,56,316,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="208,5,349,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="197,56,360,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">297</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00247">247</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00352">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png" border="0" usemap="#group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png" border="0" usemap="#group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph_map">
-<area shape="rect" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d" title="lms_db_audio_free" alt="" coords="180,31,303,57"><area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="180,81,303,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="181,132,301,159"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="361,5,481,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="353,56,489,83"></map>
+<area shape="rect" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d" title="lms_db_audio_free" alt="" coords="199,31,343,57"><area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="197,81,344,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="197,132,344,159"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="403,5,544,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="392,56,555,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> * </td>
<td class="paramname"> <em>lda</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00341">341</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00291">291</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png" border="0" usemap="#group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png" border="0" usemap="#group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="183,5,321,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="372,5,495,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="205,5,373,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="423,5,569,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> * </td>
<td class="paramname"> <em>ldi</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">193</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00173">173</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00097">lms_db_image_new()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png" border="0" usemap="#group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png" border="0" usemap="#group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="191,5,311,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="183,56,319,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="216,5,357,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="205,56,368,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">117</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00097">97</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__image_8c-source.html#l00173">lms_db_image_free()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png" border="0" usemap="#group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png" border="0" usemap="#group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="187,5,309,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="188,56,308,83"><area shape="rect" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6" title="lms_db_image_free" alt="" coords="185,107,311,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="369,81,489,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="361,132,497,159"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="208,5,355,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="208,56,355,83"><area shape="rect" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6" title="lms_db_image_free" alt="" coords="207,107,356,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="416,81,557,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="405,132,568,159"></map>
+</div>
</div>
</div><p>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> * </td>
<td class="paramname"> <em>ldi</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00141">141</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png" border="0" usemap="#group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png" border="0" usemap="#group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="185,5,324,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="375,5,497,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="211,5,379,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="428,5,575,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> * </td>
<td class="paramname"> <em>ldp</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">185</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00165">165</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00091">lms_db_playlist_new()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png" border="0" usemap="#group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png" border="0" usemap="#group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph_map" alt=""></center>
<map name="group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="196,5,316,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="188,56,324,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="221,5,363,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="211,56,373,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00091">91</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00165">lms_db_playlist_free()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png" border="0" usemap="#group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png" border="0" usemap="#group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="195,5,317,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="196,56,316,83"><area shape="rect" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789" title="lms_db_playlist_free" alt="" coords="189,107,323,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="380,81,500,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="372,132,508,159"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="216,5,363,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="216,56,363,83"><area shape="rect" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789" title="lms_db_playlist_free" alt="" coords="212,107,367,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="427,81,568,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="416,132,579,159"></map>
+</div>
</div>
</div><p>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> * </td>
<td class="paramname"> <em>ldp</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00155">155</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00135">135</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png" border="0" usemap="#group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png" border="0" usemap="#group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="191,5,329,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="380,5,503,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="216,5,384,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="433,5,580,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> * </td>
<td class="paramname"> <em>ldv</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">197</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00177">177</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00104">lms_db_video_new()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png" border="0" usemap="#group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png" border="0" usemap="#group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="188,5,308,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="180,56,316,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="211,5,352,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="200,56,363,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>DB access tool handle. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">124</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00104">104</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00177">lms_db_video_free()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png" border="0" usemap="#group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png" border="0" usemap="#group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph_map" alt=""></center>
<map name="group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="180,5,303,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="181,56,301,83"><area shape="rect" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0" title="lms_db_video_free" alt="" coords="180,107,303,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="361,81,481,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="353,132,489,159"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="200,5,347,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="200,56,347,83"><area shape="rect" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0" title="lms_db_video_free" alt="" coords="201,107,345,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="405,81,547,108"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="395,132,557,159"></map>
+</div>
</div>
</div><p>
<td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> * </td>
<td class="paramname"> <em>ldv</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png" border="0" usemap="#group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png" border="0" usemap="#group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph_map" alt=""></center>
<map name="group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="183,5,321,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="372,5,495,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="205,5,373,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="423,5,569,32"></map>
+</div>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d" title="lms_db_audio_free" alt="" coords="180,31,303,57">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="180,81,303,108">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="181,132,301,159">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="361,5,481,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="353,56,489,83">
+<area shape="rect" href="$group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d" title="lms_db_audio_free" alt="" coords="199,31,343,57">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="197,81,344,108">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="197,132,344,159">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="403,5,544,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="392,56,555,83">
-eb02e47b6c3da31a0c666fdb72746f9c
\ No newline at end of file
+13eb71f868e6453a6dea93d778d3dd89
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="183,5,321,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="372,5,495,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="205,5,373,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="423,5,569,32">
-075f37f351138796cb2745deda6fbe82
\ No newline at end of file
+e37577f71f63a324ccd08aefc2ebf57f
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="195,5,317,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="196,56,316,83">
-<area shape="rect" href="$group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789" title="lms_db_playlist_free" alt="" coords="189,107,323,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="380,81,500,108">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="372,132,508,159">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="216,5,363,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="216,56,363,83">
+<area shape="rect" href="$group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789" title="lms_db_playlist_free" alt="" coords="212,107,367,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="427,81,568,108">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="416,132,579,159">
-959c572e318a9c938cc52001b61635f9
\ No newline at end of file
+3a53c479c1d39b805019b44147a65338
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="183,5,321,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="372,5,495,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="205,5,373,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="423,5,569,32">
-8d4f3544e83994d5316abfe3c1bcc1b1
\ No newline at end of file
+553d92ee168637c99c6137d1c4ad2a82
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="187,5,309,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="188,56,308,83">
-<area shape="rect" href="$group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6" title="lms_db_image_free" alt="" coords="185,107,311,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="369,81,489,108">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="361,132,497,159">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="208,5,355,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="208,56,355,83">
+<area shape="rect" href="$group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6" title="lms_db_image_free" alt="" coords="207,107,356,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="416,81,557,108">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="405,132,568,159">
-fbd6dc8be19d98f81704a2748ad68f34
\ No newline at end of file
+61d460bf92eac8be6f02a7b9dbfeca6b
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="191,5,311,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="183,56,319,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="216,5,357,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="205,56,368,83">
-42ec26c4b56e9b61bc35de5035cbba4e
\ No newline at end of file
+ee16b60c16586c1d3717f0adfc144db4
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="185,5,324,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="375,5,497,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="211,5,379,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="428,5,575,32">
-931cc66356963e2fccc1aeb2eb6ece33
\ No newline at end of file
+ec558774a9375458a7f3db6756d9b5fe
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="188,5,308,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="180,56,316,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="211,5,352,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="200,56,363,83">
-1616d5ebff70eb7e63ec28d516875096
\ No newline at end of file
+eb5991ccc32f9b5dd8a48b2f67d2f76b
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="188,5,308,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="180,56,316,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="208,5,349,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="197,56,360,83">
-b5fdb9b9d434a7563a080c2d0629345c
\ No newline at end of file
+880b1fefffc5e03f718362ad1924f9f9
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="191,5,329,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="380,5,503,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="216,5,384,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="433,5,580,32">
-3c872c5d2fa1cff6fd9ea4cd7db6ea38
\ No newline at end of file
+2be0e5b4552e7d723f5017702fa4dbaf
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="180,5,303,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="181,56,301,83">
-<area shape="rect" href="$group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0" title="lms_db_video_free" alt="" coords="180,107,303,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="361,81,481,108">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="353,132,489,159">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04" title="lms_db_cache_add" alt="" coords="200,5,347,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3" title="lms_db_cache_get" alt="" coords="200,56,347,83">
+<area shape="rect" href="$group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0" title="lms_db_video_free" alt="" coords="201,107,345,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="405,81,547,108">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="395,132,557,159">
-eecaad120bf9f1954029b1660f5244b6
\ No newline at end of file
+f317c41f652a189eb8240561894fe69d
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="196,5,316,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="188,56,324,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0" title="lms_db_cache_del" alt="" coords="221,5,363,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="211,56,373,83">
-90288409fec4c7c6eac1e45dab6d2d9f
\ No newline at end of file
+812a45fdaa82bf2e3f4ea176c82247a4
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>Plugins-API</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>></dd></dl>
Plugins should implement the following call that provides required callbacks (see <a class="el" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>):<p>
<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> *lms_plugin_open(<span class="keywordtype">void</span>)
</pre></div><p>
where:<p>
<div class="fragment"><pre class="fragment"> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> {
<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>;
- <a class="code" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>;
+ <a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>;
};
</pre></div><p>
Users can add their own data to the end of this data structure. Callbacks and their meanings are:<p>
<div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> finish(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt)
</pre></div><p>
Finishes the plugin on slave process.<p>
-Although LMS doesn't place any restrictions on what plugins can do and how they store information, it's good to have standard tables and easy way to store data on them. For this task we provide <a class="el" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a> with functions to add audios, images, videos, playlists and possible more. Use should be pretty straightforward, see existing plugins to see usage examples. <hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+Although LMS doesn't place any restrictions on what plugins can do and how they store information, it's good to have standard tables and easy way to store data on them. For this task we provide <a class="el" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a> with functions to add audios, images, videos, playlists and possible more. Use should be pretty straightforward, see existing plugins to see usage examples. </div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li class="current"><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li class="current"><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>Light Media Scanner Documentation</h1>
<p>
-<h3 align="center">0.1 </h3>The architecture is based on 2 processes that cooperate, the first is the driver, that controls the behavior of the worker/slave process, that does the hard work. This slave process is meant to make the software more robust since some <a class="el" href="structparser.html">parser</a> libraries and even user-provided media is not reliable, so if for some reason the worker process freezes, it's killed and then restarted with the next item.<p>
+<h3 align="center">0.1 </h3>Copyright (C) 2008 by ProFUSION embedded systems Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:barbieri@profusion.mobi">barbieri@profusion.mobi</a>> <p>
+Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>></dd></dl>
+The architecture is based on 2 processes that cooperate, the first is the driver, that controls the behavior of the worker/slave process, that does the hard work. This slave process is meant to make the software more robust since some <a class="el" href="structparser.html">parser</a> libraries and even user-provided media is not reliable, so if for some reason the worker process freezes, it's killed and then restarted with the next item.<p>
User API is quite simple, with means to add new charsets to be tried and new parsers to handle media. The most important functions are (see <a class="el" href="lightmediascanner_8h.html">lightmediascanner.h</a>):<p>
<ul>
<li>int <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lms_process(lms_t *lms, const char *top_path)</a></li><li>int <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lms_check(lms_t *lms, const char *top_path)</a></li></ul>
<li><b>files:</b> known files.<ul>
<li>id: identification inside LMS/DB.</li><li>path: file path.</li><li>mtime: modification time, in seconds from UNIX epoch.</li><li>dtime: modification time, in seconds from UNIX epoch.</li><li>size: in bytes.</li></ul>
</li><li><b>audios:</b> audio files.<ul>
-<li>id: same as files.id</li><li>title: audio title.</li><li>album_id: same as audio_albums.id.</li><li>genre_id: same as audio_genres.id.</li><li>trackno: track number.</li><li>rating: rating.</li><li>playcnt: play count.</li></ul>
+<li>id: same as files.id</li><li>title: audio title.</li><li>album_id: same as audio_albums.id.</li><li>artist_id: same as audio_artists.id.</li><li>genre_id: same as audio_genres.id.</li><li>trackno: track number.</li><li>rating: rating.</li><li>playcnt: play count.</li></ul>
</li><li><b>audio_artists:</b> audio artists.<ul>
<li>id: identification inside LMS/DB.</li><li>name: artist name.</li></ul>
</li><li><b>audio_albums:</b> audio albums.<ul>
</li><li><b>videos:</b> video files.<ul>
<li>id: identification inside LMS/DB.</li><li>title: video title.</li><li>artist: video artist or creator or producer or ... </li></ul>
</li></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner.c</h1><a href="lightmediascanner_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
<a name="l00042"></a>00042
<a name="l00043"></a>00043 memset(p, 0, <span class="keyword">sizeof</span>(*p));
<a name="l00044"></a>00044
-<a name="l00045"></a>00045 p->dl_handle = dlopen(so_path, RTLD_NOW | RTLD_LOCAL);
+<a name="l00045"></a>00045 p-><a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a> = dlopen(so_path, RTLD_NOW | RTLD_LOCAL);
<a name="l00046"></a>00046 errmsg = dlerror();
<a name="l00047"></a>00047 <span class="keywordflow">if</span> (errmsg) {
<a name="l00048"></a>00048 fprintf(stderr, <span class="stringliteral">"ERROR: could not dlopen() %s\n"</span>, errmsg);
<a name="l00049"></a>00049 <span class="keywordflow">return</span> -1;
<a name="l00050"></a>00050 }
<a name="l00051"></a>00051
-<a name="l00052"></a>00052 plugin_open = dlsym(p->dl_handle, <span class="stringliteral">"lms_plugin_open"</span>);
+<a name="l00052"></a>00052 plugin_open = dlsym(p-><a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>, <span class="stringliteral">"lms_plugin_open"</span>);
<a name="l00053"></a>00053 errmsg = dlerror();
<a name="l00054"></a>00054 <span class="keywordflow">if</span> (errmsg) {
<a name="l00055"></a>00055 fprintf(stderr, <span class="stringliteral">"ERROR: could not find plugin entry point %s\n"</span>,
<a name="l00057"></a>00057 <span class="keywordflow">return</span> -2;
<a name="l00058"></a>00058 }
<a name="l00059"></a>00059
-<a name="l00060"></a>00060 p->so_path = strdup(so_path);
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!p->so_path) {
+<a name="l00060"></a>00060 p-><a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a> = strdup(so_path);
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!p-><a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>) {
<a name="l00062"></a>00062 perror(<span class="stringliteral">"strdup"</span>);
<a name="l00063"></a>00063 <span class="keywordflow">return</span> -3;
<a name="l00064"></a>00064 }
<a name="l00065"></a>00065
-<a name="l00066"></a>00066 p->plugin = plugin_open();
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (!p->plugin) {
+<a name="l00066"></a>00066 p-><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a> = plugin_open();
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (!p-><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) {
<a name="l00068"></a>00068 fprintf(stderr, <span class="stringliteral">"ERROR: plugin \"%s\" failed to init.\n"</span>, so_path);
<a name="l00069"></a>00069 <span class="keywordflow">return</span> -4;
<a name="l00070"></a>00070 }
<a name="l00171"></a>00171 free(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
<a name="l00172"></a>00172 }
<a name="l00173"></a>00173
-<a name="l00174"></a>00174 free(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
-<a name="l00175"></a>00175 <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>);
-<a name="l00176"></a>00176 free(lms);
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> 0;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00189"></a>00189 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
-<a name="l00190"></a><a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">00190</a> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (!lms)
-<a name="l00195"></a>00195 <span class="keywordflow">return</span> NULL;
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> (!so_path)
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> NULL;
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
-<a name="l00201"></a>00201 fprintf(stderr, <span class="stringliteral">"ERROR: do not add parsers while it's processing.\n"</span>);
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> NULL;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
-<a name="l00206"></a>00206 (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> + 1) * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
-<a name="l00208"></a>00208 perror(<span class="stringliteral">"realloc"</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> NULL;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 parser = lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
-<a name="l00213"></a>00213 <span class="keywordflow">if</span> (_parser_load(parser, so_path) != 0) {
-<a name="l00214"></a>00214 _parser_unload(parser);
-<a name="l00215"></a>00215 <span class="keywordflow">return</span> NULL;
-<a name="l00216"></a>00216 }
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>++;
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> parser->plugin;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00234"></a>00234 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
-<a name="l00235"></a><a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">00235</a> <a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
-<a name="l00236"></a>00236 {
-<a name="l00237"></a>00237 <span class="keywordtype">char</span> <a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>[PATH_MAX];
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (!lms)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> NULL;
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (!name)
-<a name="l00242"></a>00242 <span class="keywordflow">return</span> NULL;
-<a name="l00243"></a>00243
-<a name="l00244"></a>00244 snprintf(so_path, <span class="keyword">sizeof</span>(so_path), <span class="stringliteral">"%s/%s.so"</span>, PLUGINSDIR, name);
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(lms, so_path);
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keywordtype">int</span>
-<a name="l00249"></a><a class="code" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">00249</a> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 parser = lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i;
-<a name="l00254"></a>00254 _parser_unload(parser);
-<a name="l00255"></a>00255 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>--;
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> == 0) {
-<a name="l00258"></a>00258 free(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
-<a name="l00259"></a>00259 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = NULL;
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> 0;
-<a name="l00261"></a>00261 } <span class="keywordflow">else</span> {
-<a name="l00262"></a>00262 <span class="keywordtype">int</span> dif;
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 dif = lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> - i;
-<a name="l00265"></a>00265 <span class="keywordflow">if</span> (dif)
-<a name="l00266"></a>00266 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = memmove(parser, parser + 1,
-<a name="l00267"></a>00267 dif * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
-<a name="l00270"></a>00270 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
-<a name="l00271"></a>00271 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
-<a name="l00272"></a>00272 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> = 0;
-<a name="l00273"></a>00273 <span class="keywordflow">return</span> -1;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="keywordflow">return</span> 0;
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278 }
-<a name="l00279"></a>00279
-<a name="l00288"></a>00288 <span class="keywordtype">int</span>
-<a name="l00289"></a><a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">00289</a> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *handle)
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 <span class="keywordtype">int</span> i;
+<a name="l00174"></a>00174 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> && lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>)
+<a name="l00175"></a>00175 lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>(lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 free(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00178"></a>00178 <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>);
+<a name="l00179"></a>00179 free(lms);
+<a name="l00180"></a>00180 <span class="keywordflow">return</span> 0;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182
+<a name="l00192"></a>00192 <span class="keywordtype">void</span>
+<a name="l00193"></a><a class="code" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">00193</a> <a class="code" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (!lms) {
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (data && free_data)
+<a name="l00197"></a>00197 free_data((<span class="keywordtype">void</span> *)data);
+<a name="l00198"></a>00198 <span class="keywordflow">return</span>;
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> && lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>)
+<a name="l00202"></a>00202 lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>(lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a> = cb;
+<a name="l00205"></a>00205 lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a> = (<span class="keywordtype">void</span> *)data;
+<a name="l00206"></a>00206 lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a> = free_data;
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00218"></a>00218 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
+<a name="l00219"></a><a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">00219</a> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> (!lms)
+<a name="l00224"></a>00224 <span class="keywordflow">return</span> NULL;
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (!so_path)
+<a name="l00227"></a>00227 <span class="keywordflow">return</span> NULL;
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00230"></a>00230 fprintf(stderr, <span class="stringliteral">"ERROR: do not add parsers while it's processing.\n"</span>);
+<a name="l00231"></a>00231 <span class="keywordflow">return</span> NULL;
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233
+<a name="l00234"></a>00234 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00235"></a>00235 (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> + 1) * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00236"></a>00236 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00237"></a>00237 perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> NULL;
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 parser = lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (_parser_load(parser, so_path) != 0) {
+<a name="l00243"></a>00243 _parser_unload(parser);
+<a name="l00244"></a>00244 <span class="keywordflow">return</span> NULL;
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>++;
+<a name="l00248"></a>00248 <span class="keywordflow">return</span> parser-><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00249"></a>00249 }
+<a name="l00250"></a>00250
+<a name="l00263"></a>00263 <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *
+<a name="l00264"></a><a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">00264</a> <a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 <span class="keywordtype">char</span> <a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>[PATH_MAX];
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keywordflow">if</span> (!lms)
+<a name="l00269"></a>00269 <span class="keywordflow">return</span> NULL;
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (!name)
+<a name="l00271"></a>00271 <span class="keywordflow">return</span> NULL;
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 snprintf(so_path, <span class="keyword">sizeof</span>(so_path), <span class="stringliteral">"%s/%s.so"</span>, PLUGINSDIR, name);
+<a name="l00274"></a>00274 <span class="keywordflow">return</span> <a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(lms, so_path);
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keywordtype">int</span>
+<a name="l00278"></a><a class="code" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">00278</a> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i)
+<a name="l00279"></a>00279 {
+<a name="l00280"></a>00280 <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structparser.html">parser</a>;
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 parser = lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i;
+<a name="l00283"></a>00283 _parser_unload(parser);
+<a name="l00284"></a>00284 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>--;
+<a name="l00285"></a>00285
+<a name="l00286"></a>00286 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> == 0) {
+<a name="l00287"></a>00287 free(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
+<a name="l00288"></a>00288 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = NULL;
+<a name="l00289"></a>00289 <span class="keywordflow">return</span> 0;
+<a name="l00290"></a>00290 } <span class="keywordflow">else</span> {
+<a name="l00291"></a>00291 <span class="keywordtype">int</span> dif;
<a name="l00292"></a>00292
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (!lms)
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> -1;
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (!handle)
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> -2;
-<a name="l00297"></a>00297 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>)
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> -3;
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
-<a name="l00300"></a>00300 fprintf(stderr, <span class="stringliteral">"ERROR: do not del parsers while it's processing.\n"</span>);
-<a name="l00301"></a>00301 <span class="keywordflow">return</span> -4;
-<a name="l00302"></a>00302 }
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="keywordflow">for</span> (i = 0; i < lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
-<a name="l00305"></a>00305 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a> == handle)
-<a name="l00306"></a>00306 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 <span class="keywordflow">return</span> -3;
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00320"></a>00320 <span class="keywordtype">int</span>
-<a name="l00321"></a><a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">00321</a> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="keywordflow">if</span> (!lms) {
-<a name="l00324"></a>00324 fprintf(stderr, <span class="stringliteral">"ERROR: lms_is_processing(NULL)\n"</span>);
-<a name="l00325"></a>00325 <span class="keywordflow">return</span> -1;
-<a name="l00326"></a>00326 }
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>;
-<a name="l00329"></a>00329 }
-<a name="l00330"></a>00330
-<a name="l00339"></a>00339 <span class="keyword">const</span> <span class="keywordtype">char</span> *
-<a name="l00340"></a><a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">00340</a> <a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
-<a name="l00341"></a>00341 {
-<a name="l00342"></a>00342 <span class="keywordflow">if</span> (!lms) {
-<a name="l00343"></a>00343 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_db_path(NULL)\n"</span>);
-<a name="l00344"></a>00344 <span class="keywordflow">return</span> NULL;
-<a name="l00345"></a>00345 }
-<a name="l00346"></a>00346
-<a name="l00347"></a>00347 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
-<a name="l00348"></a>00348 }
-<a name="l00349"></a>00349
-<a name="l00361"></a>00361 <span class="keywordtype">int</span>
-<a name="l00362"></a><a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">00362</a> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
-<a name="l00363"></a>00363 {
-<a name="l00364"></a>00364 <span class="keywordflow">if</span> (!lms) {
-<a name="l00365"></a>00365 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_slave_timeout(NULL)\n"</span>);
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> -1;
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00369"></a>00369 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
-<a name="l00370"></a>00370 }
-<a name="l00371"></a>00371
-<a name="l00382"></a><a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">00382</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> ms)
-<a name="l00383"></a>00383 {
-<a name="l00384"></a>00384 <span class="keywordflow">if</span> (!lms) {
-<a name="l00385"></a>00385 fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_slave_timeout(NULL, %d)\n"</span>, ms);
-<a name="l00386"></a>00386 <span class="keywordflow">return</span>;
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388
-<a name="l00389"></a>00389 lms-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a> = ms;
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391
-<a name="l00403"></a>00403 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>
-<a name="l00404"></a><a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">00404</a> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
-<a name="l00405"></a>00405 {
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (!lms) {
-<a name="l00407"></a>00407 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_commit_interval(NULL)\n"</span>);
-<a name="l00408"></a>00408 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1;
-<a name="l00409"></a>00409 }
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
-<a name="l00412"></a>00412 }
-<a name="l00413"></a>00413
-<a name="l00426"></a>00426 <span class="keywordtype">void</span>
-<a name="l00427"></a><a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">00427</a> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions)
-<a name="l00428"></a>00428 {
-<a name="l00429"></a>00429 <span class="keywordflow">if</span> (!lms) {
-<a name="l00430"></a>00430 fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_commit_interval(NULL, %u)\n"</span>,
-<a name="l00431"></a>00431 transactions);
-<a name="l00432"></a>00432 <span class="keywordflow">return</span>;
-<a name="l00433"></a>00433 }
-<a name="l00434"></a>00434
-<a name="l00435"></a>00435 lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a> = transactions;
-<a name="l00436"></a>00436 }
-<a name="l00437"></a>00437
-<a name="l00450"></a>00450 <span class="keywordtype">int</span>
-<a name="l00451"></a><a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">00451</a> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
-<a name="l00452"></a>00452 {
-<a name="l00453"></a>00453 <span class="keywordflow">if</span> (!lms) {
-<a name="l00454"></a>00454 fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_add(NULL)\n"</span>);
-<a name="l00455"></a>00455 <span class="keywordflow">return</span> -1;
-<a name="l00456"></a>00456 }
-<a name="l00457"></a>00457
-<a name="l00458"></a>00458 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
-<a name="l00459"></a>00459 }
-<a name="l00460"></a>00460
-<a name="l00473"></a>00473 <span class="keywordtype">int</span>
-<a name="l00474"></a><a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">00474</a> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
-<a name="l00475"></a>00475 {
-<a name="l00476"></a>00476 <span class="keywordflow">if</span> (!lms) {
-<a name="l00477"></a>00477 fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_del(NULL)\n"</span>);
-<a name="l00478"></a>00478 <span class="keywordflow">return</span> -1;
-<a name="l00479"></a>00479 }
-<a name="l00480"></a>00480
-<a name="l00481"></a>00481 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
-<a name="l00482"></a>00482 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00293"></a>00293 dif = lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> - i;
+<a name="l00294"></a>00294 <span class="keywordflow">if</span> (dif)
+<a name="l00295"></a>00295 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = memmove(parser, parser + 1,
+<a name="l00296"></a>00296 dif * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00297"></a>00297
+<a name="l00298"></a>00298 lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00299"></a>00299 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(<span class="keyword">struct</span> parser));
+<a name="l00300"></a>00300 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00301"></a>00301 lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> = 0;
+<a name="l00302"></a>00302 <span class="keywordflow">return</span> -1;
+<a name="l00303"></a>00303 }
+<a name="l00304"></a>00304
+<a name="l00305"></a>00305 <span class="keywordflow">return</span> 0;
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307 }
+<a name="l00308"></a>00308
+<a name="l00317"></a>00317 <span class="keywordtype">int</span>
+<a name="l00318"></a><a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">00318</a> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *handle)
+<a name="l00319"></a>00319 {
+<a name="l00320"></a>00320 <span class="keywordtype">int</span> i;
+<a name="l00321"></a>00321
+<a name="l00322"></a>00322 <span class="keywordflow">if</span> (!lms)
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> -1;
+<a name="l00324"></a>00324 <span class="keywordflow">if</span> (!handle)
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> -2;
+<a name="l00326"></a>00326 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>)
+<a name="l00327"></a>00327 <span class="keywordflow">return</span> -3;
+<a name="l00328"></a>00328 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00329"></a>00329 fprintf(stderr, <span class="stringliteral">"ERROR: do not del parsers while it's processing.\n"</span>);
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> -4;
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333 <span class="keywordflow">for</span> (i = 0; i < lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
+<a name="l00334"></a>00334 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a> == handle)
+<a name="l00335"></a>00335 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
+<a name="l00336"></a>00336
+<a name="l00337"></a>00337 <span class="keywordflow">return</span> -3;
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339
+<a name="l00349"></a>00349 <span class="keywordtype">int</span>
+<a name="l00350"></a><a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">00350</a> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00351"></a>00351 {
+<a name="l00352"></a>00352 <span class="keywordflow">if</span> (!lms) {
+<a name="l00353"></a>00353 fprintf(stderr, <span class="stringliteral">"ERROR: lms_is_processing(NULL)\n"</span>);
+<a name="l00354"></a>00354 <span class="keywordflow">return</span> -1;
+<a name="l00355"></a>00355 }
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>;
+<a name="l00358"></a>00358 }
+<a name="l00359"></a>00359
+<a name="l00368"></a>00368 <span class="keyword">const</span> <span class="keywordtype">char</span> *
+<a name="l00369"></a><a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">00369</a> <a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00370"></a>00370 {
+<a name="l00371"></a>00371 <span class="keywordflow">if</span> (!lms) {
+<a name="l00372"></a>00372 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_db_path(NULL)\n"</span>);
+<a name="l00373"></a>00373 <span class="keywordflow">return</span> NULL;
+<a name="l00374"></a>00374 }
+<a name="l00375"></a>00375
+<a name="l00376"></a>00376 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378
+<a name="l00390"></a>00390 <span class="keywordtype">int</span>
+<a name="l00391"></a><a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">00391</a> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00392"></a>00392 {
+<a name="l00393"></a>00393 <span class="keywordflow">if</span> (!lms) {
+<a name="l00394"></a>00394 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_slave_timeout(NULL)\n"</span>);
+<a name="l00395"></a>00395 <span class="keywordflow">return</span> -1;
+<a name="l00396"></a>00396 }
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
+<a name="l00399"></a>00399 }
+<a name="l00400"></a>00400
+<a name="l00411"></a><a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">00411</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> ms)
+<a name="l00412"></a>00412 {
+<a name="l00413"></a>00413 <span class="keywordflow">if</span> (!lms) {
+<a name="l00414"></a>00414 fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_slave_timeout(NULL, %d)\n"</span>, ms);
+<a name="l00415"></a>00415 <span class="keywordflow">return</span>;
+<a name="l00416"></a>00416 }
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 lms-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a> = ms;
+<a name="l00419"></a>00419 }
+<a name="l00420"></a>00420
+<a name="l00432"></a>00432 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>
+<a name="l00433"></a><a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">00433</a> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00434"></a>00434 {
+<a name="l00435"></a>00435 <span class="keywordflow">if</span> (!lms) {
+<a name="l00436"></a>00436 fprintf(stderr, <span class="stringliteral">"ERROR: lms_get_commit_interval(NULL)\n"</span>);
+<a name="l00437"></a>00437 <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1;
+<a name="l00438"></a>00438 }
+<a name="l00439"></a>00439
+<a name="l00440"></a>00440 <span class="keywordflow">return</span> lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
+<a name="l00441"></a>00441 }
+<a name="l00442"></a>00442
+<a name="l00455"></a>00455 <span class="keywordtype">void</span>
+<a name="l00456"></a><a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">00456</a> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions)
+<a name="l00457"></a>00457 {
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (!lms) {
+<a name="l00459"></a>00459 fprintf(stderr, <span class="stringliteral">"ERROR: lms_set_commit_interval(NULL, %u)\n"</span>,
+<a name="l00460"></a>00460 transactions);
+<a name="l00461"></a>00461 <span class="keywordflow">return</span>;
+<a name="l00462"></a>00462 }
+<a name="l00463"></a>00463
+<a name="l00464"></a>00464 lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a> = transactions;
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466
+<a name="l00479"></a>00479 <span class="keywordtype">int</span>
+<a name="l00480"></a><a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">00480</a> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00481"></a>00481 {
+<a name="l00482"></a>00482 <span class="keywordflow">if</span> (!lms) {
+<a name="l00483"></a>00483 fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_add(NULL)\n"</span>);
+<a name="l00484"></a>00484 <span class="keywordflow">return</span> -1;
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486
+<a name="l00487"></a>00487 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
+<a name="l00488"></a>00488 }
+<a name="l00489"></a>00489
+<a name="l00502"></a>00502 <span class="keywordtype">int</span>
+<a name="l00503"></a><a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">00503</a> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00504"></a>00504 {
+<a name="l00505"></a>00505 <span class="keywordflow">if</span> (!lms) {
+<a name="l00506"></a>00506 fprintf(stderr, <span class="stringliteral">"ERROR: lms_charset_del(NULL)\n"</span>);
+<a name="l00507"></a>00507 <span class="keywordflow">return</span> -1;
+<a name="l00508"></a>00508 }
+<a name="l00509"></a>00509
+<a name="l00510"></a>00510 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(lms-><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>, charset);
+<a name="l00511"></a>00511 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner.c File Reference</h1><code>#include <dlfcn.h></code><br>
<code>#include <stdio.h></code><br>
<code>#include <stdlib.h></code><br>
<code>#include "<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>"</code><br>
<p>
-Include dependency graph for lightmediascanner.c:<p><center><img src="lightmediascanner_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner.c_map" alt=""></center>
<map name="src/lib/lightmediascanner.c_map">
-<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="699,259,827,285"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="219,385,392,412"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="441,309,609,336"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="660,360,865,387"></map>
+<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="360,239,515,265"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="501,84,712,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="749,161,949,188"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="668,239,921,265"></map>
+</div>
<p>
<a href="lightmediascanner_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, const void *data, <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data)</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *so_path)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name)</td></tr>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00035">35</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00035">35</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c2843894cca63ec0089c381e69d1d81a"></a><!-- doxytag: member="lightmediascanner.c::DEFAULT_SLAVE_TIMEOUT" ref="c2843894cca63ec0089c381e69d1d81a" args="" -->
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00034">34</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00034">34</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00278">278</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="668e706f6d5eae3ba5e36ff4db2ae514"></a><!-- doxytag: member="lightmediascanner.c::lms_set_progress_callback" ref="668e706f6d5eae3ba5e36ff4db2ae514" args="(lms_t *lms, lms_progress_callback_t cb, const void *data, lms_free_callback_t free_data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void lms_set_progress_callback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> </td>
+ <td class="paramname"> <em>cb</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void * </td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> </td>
+ <td class="paramname"> <em>free_data</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00249">249</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.
+Set callback to be used to report progress (check and process).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em> </td><td>previously allocated Light Media Scanner instance. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cb</em> </td><td>function to call when files are processed or NULL to unset. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>data to give to cb when it's called, may be NULL. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>free_data</em> </td><td>function to call to free <em>data</em> when <a class="el" href="structlms.html">lms</a> is freed or new progress data is set. </td></tr>
+ </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00193">193</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00083">lms::cb</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="699,259,827,285">
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="219,385,392,412">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="441,309,609,336">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="660,360,865,387">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="360,239,515,265">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="501,84,712,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="749,161,949,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="668,239,921,265">
-941e05618dc03c9ae93749b201be85d7
\ No newline at end of file
+ba4ba4d40adc5d5256bea28e7d76eb1d
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner.h</h1><a href="lightmediascanner_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
-<a name="l00107"></a>00107 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_H_</span>
-<a name="l00108"></a><a class="code" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">00108</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_H_ 1</span>
-<a name="l00109"></a>00109 <span class="preprocessor"></span>
-<a name="l00110"></a>00110 <span class="preprocessor">#ifdef API</span>
-<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
-<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span>
-<a name="l00114"></a>00114 <span class="preprocessor">#ifdef __GNUC__</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ >= 4</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span><span class="preprocessor"># define API __attribute__ ((visibility("default")))</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED __attribute__((__sentinel__))</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor"># else</span>
-<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor"># define API</span>
-<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED</span>
-<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
-<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)</span>
-<a name="l00123"></a>00123 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE __attribute__((__pure__))</span>
-<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC __attribute__((__malloc__))</span>
-<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST __attribute__((__const__))</span>
-<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED __attribute__((__unused__))</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor"># else</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NORETURN</span>
-<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED</span>
-<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
-<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span>
-<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
-<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor"># else</span>
-<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...)</span>
-<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
-<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00142"></a><a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">00142</a> <span class="preprocessor"></span><span class="preprocessor"># define API</span>
-<a name="l00143"></a><a class="code" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">00143</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED</span>
-<a name="l00144"></a><a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">00144</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE</span>
-<a name="l00145"></a><a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">00145</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC</span>
-<a name="l00146"></a><a class="code" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">00146</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST</span>
-<a name="l00147"></a><a class="code" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">00147</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED</span>
-<a name="l00148"></a><a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">00148</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT</span>
-<a name="l00149"></a><a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">00149</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...)</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00151"></a>00151 <span class="preprocessor"></span>
-<a name="l00152"></a>00152 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
-<a name="l00154"></a>00154 <span class="preprocessor">#endif</span>
-<a name="l00155"></a>00155 <span class="preprocessor"></span>
-<a name="l00161"></a><a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">00161</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a>;
-<a name="l00162"></a><a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">00162</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> <a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a>;
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
-<a name="l00165"></a>00165 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00166"></a>00166 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00167"></a>00167 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lms_check</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00168"></a>00168 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00169"></a>00169 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>) <a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">GNUC_PURE</a> <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00170"></a>00170 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00171"></a>00171 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> ms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00172"></a>00172 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00173"></a>00173 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00176"></a>00176 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00177"></a>00177 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a> *handle) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00110"></a>00110 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_H_</span>
+<a name="l00111"></a><a class="code" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">00111</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_H_ 1</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00113"></a>00113 <span class="preprocessor">#ifdef API</span>
+<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00116"></a>00116 <span class="preprocessor"></span>
+<a name="l00117"></a>00117 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00118"></a>00118 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ >= 4</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span><span class="preprocessor"># define API __attribute__ ((visibility("default")))</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED __attribute__((__sentinel__))</span>
+<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor"># define API</span>
+<a name="l00123"></a>00123 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED</span>
+<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)</span>
+<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE __attribute__((__pure__))</span>
+<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC __attribute__((__malloc__))</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST __attribute__((__const__))</span>
+<a name="l00129"></a>00129 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED __attribute__((__unused__))</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00131"></a>00131 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NORETURN</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)</span>
+<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...)</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00144"></a>00144 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">00145</a> <span class="preprocessor"></span><span class="preprocessor"># define API</span>
+<a name="l00146"></a><a class="code" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">00146</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NULL_TERMINATED</span>
+<a name="l00147"></a><a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">00147</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_PURE</span>
+<a name="l00148"></a><a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">00148</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_MALLOC</span>
+<a name="l00149"></a><a class="code" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">00149</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_CONST</span>
+<a name="l00150"></a><a class="code" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">00150</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_UNUSED</span>
+<a name="l00151"></a><a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">00151</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00152"></a><a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">00152</a> <span class="preprocessor"></span><span class="preprocessor"># define GNUC_NON_NULL(...)</span>
+<a name="l00153"></a>00153 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00154"></a>00154 <span class="preprocessor"></span>
+<a name="l00155"></a>00155 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00156"></a>00156 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00157"></a>00157 <span class="preprocessor">#endif</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span>
+<a name="l00164"></a><a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">00164</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> <a class="code" href="structlms.html">lms_t</a>;
+<a name="l00165"></a><a class="code" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">00165</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a>;
+<a name="l00166"></a>00166
+<a name="l00167"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">00167</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00168"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">00168</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>,
+<a name="l00169"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">00169</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>,
+<a name="l00170"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">00170</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>,
+<a name="l00171"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">00171</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>,
+<a name="l00172"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">00172</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>,
+<a name="l00173"></a><a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">00173</a> <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>,
+<a name="l00174"></a>00174 } <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a>;
+<a name="l00175"></a>00175
+<a name="l00176"></a><a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">00176</a> <span class="keyword">typedef</span> void (*<a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>)(<span class="keywordtype">void</span> *data);
+<a name="l00177"></a><a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">00177</a> <span class="keyword">typedef</span> void (*<a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, <span class="keywordtype">void</span> *data);
<a name="l00178"></a>00178
-<a name="l00179"></a>00179 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00180"></a>00180 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00183"></a>00183 <span class="preprocessor"></span>}
-<a name="l00184"></a>00184 <span class="preprocessor">#endif</span>
-<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00179"></a>00179 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
+<a name="l00180"></a>00180 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(<a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00181"></a>00181 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00182"></a>00182 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00183"></a>00183 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00184"></a>00184 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00185"></a>00185 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a>(<a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00186"></a>00186 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00187"></a>00187 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">GNUC_PURE</a> <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00188"></a>00188 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00189"></a>00189 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keywordtype">int</span> ms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00190"></a>00190 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a>(<span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *lms) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00191"></a>00191 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> transactions) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00192"></a>00192 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner_8c.html#668e706f6d5eae3ba5e36ff4db2ae514">lms_set_progress_callback</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588">lms_parser_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00195"></a>00195 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="group__LMS__API.html#g74b81422ff46a46b4b0fc44e8709ecee">lms_parser_find_and_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00196"></a>00196 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">lms_parser_del</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *handle) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00197"></a>00197
+<a name="l00198"></a>00198 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00199"></a>00199 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>}
+<a name="l00203"></a>00203 <span class="preprocessor">#endif</span>
+<a name="l00204"></a>00204 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>src/lib/lightmediascanner.h File Reference</h1>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner.hdep_map">
-<area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="792,5,957,32"><area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="488,107,696,133"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="773,56,976,83"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="769,107,980,133"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="223,107,428,133"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="477,208,707,235"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="499,259,685,285"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="764,360,985,387"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="756,157,993,184"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="763,208,987,235"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="760,259,989,285"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="764,309,985,336"></map>
+<area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,239,203,265"><area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="333,161,587,188"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,239,472,265"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,239,752,265"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="341,84,584,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="931,161,1205,188"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1397,161,1619,188"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1085,239,1349,265"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,239,1061,265"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1373,239,1643,265"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1667,239,1941,265"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1965,239,2229,265"></map>
+</div>
<p>
<a href="lightmediascanner_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structlms.html">lms</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structlms.html">lms</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d118599605b4e66ca5f91376982b8a64">lms_t</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structlms__plugin.html">lms_plugin</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structlms__plugin.html">lms_plugin</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> )(void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> )(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *path, int path_len, <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, void *data)</td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> { <br>
+ <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>,
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>,
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>,
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>,
+<br>
+ <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>,
+<a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>
+<br>
+ }</td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms.html">lms_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lms_check</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API const <br>
-char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br>
+int API void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4098d31de667a895095fc8d4d9bc10c0">lms_get_db_path</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_NON_NULL(1)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g8c594bed751d504965b5cc0c7e93fb71">lms_is_processing</a> (const <a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>) GNUC_PURE GNUC_NON_NULL(1)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#ge81a028f08139e64e97ac191bd899b32">lms_set_commit_interval</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, unsigned int transactions) GNUC_NON_NULL(1)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d2da241599f7f576670d64184f972c43">lms_set_progress_callback</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb, const void *data, <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> free_data) GNUC_NON_NULL(1)</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ce55a5c9cc767b96fa6f24b77bebc7c3">lms_parser_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *so_path) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br>
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#e48d0483903bbb9604d14b44f7c569d9">lms_parser_find_and_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *name) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> <br>
-*API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lms_parser_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *handle) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br>
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#5ba173b12c355bbdf7913bfff0ff6415">lms_parser_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *handle) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> <br>
-*API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br>
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#03afcd1e04665bdaebe73d9f6cc20553">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> <br>
-*API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API <br>
+<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *API int API int <br>
+API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#35fc2de4828878b9dec07e8edda8a5e2">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset) GNUC_NON_NULL(1</td></tr>
</table>
<hr><h2>Define Documentation</h2>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00111">111</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00142">142</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="ccce66c7f9844ae805b83bee1b9c32b5"></a><!-- doxytag: member="lightmediascanner.h::GNUC_CONST" ref="ccce66c7f9844ae805b83bee1b9c32b5" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00146">146</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00152">152</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="3c631eb7d32b61d70bfc615ae54e5552"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NULL_TERMINATED" ref="3c631eb7d32b61d70bfc615ae54e5552" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00143">143</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00146">146</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="7a9a21d60c8e567c8110c8e3069f8201"></a><!-- doxytag: member="lightmediascanner.h::GNUC_PURE" ref="7a9a21d60c8e567c8110c8e3069f8201" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00144">144</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00147">147</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="80a4050221a914ea58d5799f13109ebb"></a><!-- doxytag: member="lightmediascanner.h::GNUC_UNUSED" ref="80a4050221a914ea58d5799f13109ebb" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00147">147</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00150">150</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00151">151</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="55ee3894f334dc5b30431bf94971f110"></a><!-- doxytag: member="lightmediascanner.h::lms_free_callback_t" ref="55ee3894f334dc5b30431bf94971f110" args=")(void *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a>)(void *data) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00176">176</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
<a class="anchor" name="ccedd0cd6d535dcfee399957033074fd"></a><!-- doxytag: member="lightmediascanner.h::lms_plugin_t" ref="ccedd0cd6d535dcfee399957033074fd" args="" -->
<div class="memitem">
<div class="memproto">
<p>
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00165">165</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="117b4bb24ec8fc48fc4e6f0d7fa9ea3a"></a><!-- doxytag: member="lightmediascanner.h::lms_progress_callback_t" ref="117b4bb24ec8fc48fc4e6f0d7fa9ea3a" args=")(lms_t *lms, const char *path, int path_len, lms_progress_status_t status, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a>)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *path, int path_len, <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status, void *data) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00162">162</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00177">177</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d118599605b4e66ca5f91376982b8a64"></a><!-- doxytag: member="lightmediascanner.h::lms_t" ref="d118599605b4e66ca5f91376982b8a64" args="" -->
<p>
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00164">164</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="52b270a30c58810720ae0650f64d2370"></a><!-- doxytag: member="lightmediascanner.h::lms_progress_status_t" ref="52b270a30c58810720ae0650f64d2370" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_UP_TO_DATE" ref="52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d" args="" -->LMS_PROGRESS_STATUS_UP_TO_DATE</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_PROCESSED" ref="52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70" args="" -->LMS_PROGRESS_STATUS_PROCESSED</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_DELETED" ref="52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11" args="" -->LMS_PROGRESS_STATUS_DELETED</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_KILLED" ref="52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152" args="" -->LMS_PROGRESS_STATUS_KILLED</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_ERROR_PARSE" ref="52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82" args="" -->LMS_PROGRESS_STATUS_ERROR_PARSE</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" name="52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082"></a><!-- doxytag: member="LMS_PROGRESS_STATUS_ERROR_COMM" ref="52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082" args="" -->LMS_PROGRESS_STATUS_ERROR_COMM</em> </td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8h-source.html#l00167">167</a> of file <a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
-<a class="anchor" name="890f1af4c54c88a63abdbeff5ecd49a3"></a><!-- doxytag: member="lightmediascanner.h::lms_check" ref="890f1af4c54c88a63abdbeff5ecd49a3" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<a class="anchor" name="5b70063cf19648de70bb145404aa3d0b"></a><!-- doxytag: member="lightmediascanner.h::lms_check" ref="5b70063cf19648de70bb145404aa3d0b" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">API int API int lms_check </td>
+ <td class="memname">API int API int API int lms_check </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
<td class="paramname"> <em>lms</em>, </td>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="bfd6888e606654c585e41aa946637432"></a><!-- doxytag: member="lightmediascanner.h::lms_check_single_process" ref="bfd6888e606654c585e41aa946637432" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API int API int API int API int lms_check_single_process </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"> <em>top_path</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="c5eda23c23b2ea76f001ac994c2ba9e2"></a><!-- doxytag: member="lightmediascanner.h::lms_process_single_process" ref="c5eda23c23b2ea76f001ac994c2ba9e2" args="(lms_t *lms, const char *top_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API int API int lms_process_single_process </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"> <em>top_path</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="d2da241599f7f576670d64184f972c43"></a><!-- doxytag: member="lightmediascanner.h::lms_set_progress_callback" ref="d2da241599f7f576670d64184f972c43" args="(lms_t *lms, lms_progress_callback_t cb, const void *data, lms_free_callback_t free_data) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API void lms_set_progress_callback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> </td>
+ <td class="paramname"> <em>cb</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void * </td>
+ <td class="paramname"> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> </td>
+ <td class="paramname"> <em>free_data</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
+Set callback to be used to report progress (check and process).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em> </td><td>previously allocated Light Media Scanner instance. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>cb</em> </td><td>function to call when files are processed or NULL to unset. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>data to give to cb when it's called, may be NULL. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>free_data</em> </td><td>function to call to free <em>data</em> when <a class="el" href="structlms.html">lms</a> is freed or new progress data is set. </td></tr>
+ </table>
+</dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00193">193</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00083">lms::cb</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00084">lms::data</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00085">lms::free_data</a>, and <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="30aa1e83907fc1049d2adccb28eef489"></a><!-- doxytag: member="lightmediascanner.h::lms_stop_processing" ref="30aa1e83907fc1049d2adccb28eef489" args="(lms_t *lms) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API int API int API int API int API void lms_stop_processing </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em> </td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01079">1079</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="792,5,957,32">
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="488,107,696,133">
-<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="773,56,976,83">
-<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="769,107,980,133">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="223,107,428,133">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="477,208,707,235">
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="499,259,685,285">
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="764,360,985,387">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="756,157,993,184">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="763,208,987,235">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="760,259,989,285">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="764,309,985,336">
+<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,239,203,265">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="333,161,587,188">
+<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,239,472,265">
+<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,239,752,265">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="341,84,584,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="931,161,1205,188">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1397,161,1619,188">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1085,239,1349,265">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,239,1061,265">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1373,239,1643,265">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1667,239,1941,265">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1965,239,2229,265">
-3896306936d5e31832c584767f4ea72b
\ No newline at end of file
+0d2628ac261d8702b7895a8e9fce450c
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_charset_conv.c</h1><a href="lightmediascanner__charset__conv_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>"</span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include <iconv.h></span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include <string.h></span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include <errno.h></span>
-<a name="l00007"></a>00007
-<a name="l00008"></a>00008 <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> {
-<a name="l00009"></a>00009 iconv_t check;
-<a name="l00010"></a>00010 iconv_t fallback;
-<a name="l00011"></a>00011 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
-<a name="l00012"></a>00012 iconv_t *convs;
-<a name="l00013"></a>00013 <span class="keywordtype">char</span> **names;
-<a name="l00014"></a>00014 };
-<a name="l00015"></a>00015
-<a name="l00025"></a>00025 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *
-<a name="l00026"></a><a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">00026</a> <a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>)
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc;
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 lcc = malloc(<span class="keyword">sizeof</span>(*lcc));
-<a name="l00031"></a>00031 <span class="keywordflow">if</span> (!lcc) {
-<a name="l00032"></a>00032 perror(<span class="stringliteral">"malloc"</span>);
-<a name="l00033"></a>00033 <span class="keywordflow">return</span> NULL;
-<a name="l00034"></a>00034 }
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 lcc->check = iconv_open(<span class="stringliteral">"UTF-8"</span>, <span class="stringliteral">"UTF-8"</span>);
-<a name="l00037"></a>00037 <span class="keywordflow">if</span> (lcc->check == (iconv_t)-1) {
-<a name="l00038"></a>00038 perror(<span class="stringliteral">"ERROR: could not create conversion checker"</span>);
-<a name="l00039"></a>00039 <span class="keywordflow">goto</span> error_check;
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042 lcc->fallback = iconv_open(<span class="stringliteral">"UTF-8//IGNORE"</span>, <span class="stringliteral">"UTF-8"</span>);
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (lcc->fallback == (iconv_t)-1) {
-<a name="l00044"></a>00044 perror(<span class="stringliteral">"ERROR: could not create conversion fallback"</span>);
-<a name="l00045"></a>00045 <span class="keywordflow">goto</span> error_fallback;
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 lcc->size = 0;
-<a name="l00049"></a>00049 lcc->convs = NULL;
-<a name="l00050"></a>00050 lcc->names = NULL;
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> lcc;
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 error_fallback:
-<a name="l00054"></a>00054 iconv_close(lcc->check);
-<a name="l00055"></a>00055 error_check:
-<a name="l00056"></a>00056 free(lcc);
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> NULL;
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00066"></a>00066 <span class="keywordtype">void</span>
-<a name="l00067"></a><a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">00067</a> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 <span class="keywordtype">int</span> i;
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (!lcc)
-<a name="l00072"></a>00072 <span class="keywordflow">return</span>;
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 iconv_close(lcc->check);
-<a name="l00075"></a>00075 iconv_close(lcc->fallback);
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_charset_conv.c</h1><a href="lightmediascanner__charset__conv_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <iconv.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <string.h></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <errno.h></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <ctype.h></span>
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> {
+<a name="l00030"></a>00030 iconv_t check;
+<a name="l00031"></a>00031 iconv_t fallback;
+<a name="l00032"></a>00032 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size;
+<a name="l00033"></a>00033 iconv_t *convs;
+<a name="l00034"></a>00034 <span class="keywordtype">char</span> **names;
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036
+<a name="l00046"></a>00046 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *
+<a name="l00047"></a><a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">00047</a> <a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(<span class="keywordtype">int</span> use_check, <span class="keywordtype">int</span> use_fallback)
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc;
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 lcc = malloc(<span class="keyword">sizeof</span>(*lcc));
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (!lcc) {
+<a name="l00053"></a>00053 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> NULL;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (!use_check)
+<a name="l00058"></a>00058 lcc->check = (iconv_t)-1;
+<a name="l00059"></a>00059 <span class="keywordflow">else</span> {
+<a name="l00060"></a>00060 lcc->check = iconv_open(<span class="stringliteral">"UTF-8"</span>, <span class="stringliteral">"UTF-8"</span>);
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (lcc->check == (iconv_t)-1) {
+<a name="l00062"></a>00062 perror(<span class="stringliteral">"ERROR: could not create conversion checker"</span>);
+<a name="l00063"></a>00063 <span class="keywordflow">goto</span> error_check;
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (!use_fallback)
+<a name="l00068"></a>00068 lcc->fallback = (iconv_t)-1;
+<a name="l00069"></a>00069 <span class="keywordflow">else</span> {
+<a name="l00070"></a>00070 lcc->fallback = iconv_open(<span class="stringliteral">"UTF-8//IGNORE"</span>, <span class="stringliteral">"UTF-8"</span>);
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (lcc->fallback == (iconv_t)-1) {
+<a name="l00072"></a>00072 perror(<span class="stringliteral">"ERROR: could not create conversion fallback"</span>);
+<a name="l00073"></a>00073 <span class="keywordflow">goto</span> error_fallback;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++) {
-<a name="l00078"></a>00078 iconv_close(lcc->convs[i]);
-<a name="l00079"></a>00079 free(lcc->names[i]);
-<a name="l00080"></a>00080 }
+<a name="l00077"></a>00077 lcc->size = 0;
+<a name="l00078"></a>00078 lcc->convs = NULL;
+<a name="l00079"></a>00079 lcc->names = NULL;
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> lcc;
<a name="l00081"></a>00081
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (lcc->convs)
-<a name="l00083"></a>00083 free(lcc->convs);
-<a name="l00084"></a>00084 if (lcc->names)
-<a name="l00085"></a>00085 free(lcc->names);
+<a name="l00082"></a>00082 error_fallback:
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (lcc->check != (iconv_t)-1)
+<a name="l00084"></a>00084 iconv_close(lcc->check);
+<a name="l00085"></a>00085 error_check:
<a name="l00086"></a>00086 free(lcc);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00097"></a>00097 <span class="keywordtype">int</span>
-<a name="l00098"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">00098</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 iconv_t cd, *convs;
-<a name="l00101"></a>00101 <span class="keywordtype">char</span> **names;
-<a name="l00102"></a>00102 <span class="keywordtype">int</span> idx, ns;
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (!lcc)
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> -1;
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (!charset)
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> -2;
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 cd = iconv_open(<span class="stringliteral">"UTF-8"</span>, charset);
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (cd == (iconv_t)-1) {
-<a name="l00112"></a>00112 fprintf(stderr, <span class="stringliteral">"ERROR: could not add conversion charset '%s': %s\n"</span>,
-<a name="l00113"></a>00113 charset, strerror(errno));
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> -3;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00117"></a>00117 idx = lcc->size;
-<a name="l00118"></a>00118 ns = lcc->size + 1;
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 convs = realloc(lcc->convs, ns * <span class="keyword">sizeof</span>(*convs));
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!convs)
-<a name="l00122"></a>00122 <span class="keywordflow">goto</span> realloc_error;
-<a name="l00123"></a>00123 lcc->convs = convs;
-<a name="l00124"></a>00124 lcc->convs[idx] = cd;
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 names = realloc(lcc->names, ns * <span class="keyword">sizeof</span>(*names));
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!names)
-<a name="l00128"></a>00128 <span class="keywordflow">goto</span> realloc_error;
-<a name="l00129"></a>00129 lcc->names = names;
-<a name="l00130"></a>00130 lcc->names[idx] = strdup(charset);
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!lcc->names[idx])
-<a name="l00132"></a>00132 <span class="keywordflow">goto</span> realloc_error;
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 lcc->size = ns;
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> 0;
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 realloc_error:
-<a name="l00138"></a>00138 perror(<span class="stringliteral">"realloc"</span>);
-<a name="l00139"></a>00139 iconv_close(cd);
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> -4;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00144"></a>00144 _find(<span class="keyword">const</span> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="keywordtype">int</span> i;
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++)
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (strcmp(lcc->names[i], charset) == 0)
-<a name="l00150"></a>00150 <span class="keywordflow">return</span> i;
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> -1;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00163"></a>00163 <span class="keywordtype">int</span>
-<a name="l00164"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">00164</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 iconv_t *convs;
-<a name="l00167"></a>00167 <span class="keywordtype">char</span> **names;
-<a name="l00168"></a>00168 <span class="keywordtype">int</span> idx;
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keywordflow">if</span> (!lcc)
-<a name="l00171"></a>00171 <span class="keywordflow">return</span> -1;
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> NULL;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090
+<a name="l00100"></a>00100 <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *
+<a name="l00101"></a><a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">00101</a> <a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>)
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> <a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(1, 1);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00111"></a>00111 <span class="keywordtype">void</span>
+<a name="l00112"></a><a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">00112</a> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc)
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114 <span class="keywordtype">int</span> i;
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (!lcc)
+<a name="l00117"></a>00117 <span class="keywordflow">return</span>;
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="keywordflow">if</span> (lcc->check != (iconv_t)-1)
+<a name="l00120"></a>00120 iconv_close(lcc->check);
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (lcc->fallback != (iconv_t)-1)
+<a name="l00122"></a>00122 iconv_close(lcc->fallback);
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++) {
+<a name="l00125"></a>00125 iconv_close(lcc->convs[i]);
+<a name="l00126"></a>00126 free(lcc->names[i]);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (lcc->convs)
+<a name="l00130"></a>00130 free(lcc->convs);
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (lcc->names)
+<a name="l00132"></a>00132 free(lcc->names);
+<a name="l00133"></a>00133 free(lcc);
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">00145</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 iconv_t cd, *convs;
+<a name="l00148"></a>00148 <span class="keywordtype">char</span> **names;
+<a name="l00149"></a>00149 <span class="keywordtype">int</span> idx, ns;
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (!lcc)
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> -1;
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (!charset)
+<a name="l00155"></a>00155 <span class="keywordflow">return</span> -2;
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 cd = iconv_open(<span class="stringliteral">"UTF-8"</span>, charset);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (cd == (iconv_t)-1) {
+<a name="l00159"></a>00159 fprintf(stderr, <span class="stringliteral">"ERROR: could not add conversion charset '%s': %s\n"</span>,
+<a name="l00160"></a>00160 charset, strerror(errno));
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> -3;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 idx = lcc->size;
+<a name="l00165"></a>00165 ns = lcc->size + 1;
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 convs = realloc(lcc->convs, ns * <span class="keyword">sizeof</span>(*convs));
+<a name="l00168"></a>00168 <span class="keywordflow">if</span> (!convs)
+<a name="l00169"></a>00169 <span class="keywordflow">goto</span> realloc_error;
+<a name="l00170"></a>00170 lcc->convs = convs;
+<a name="l00171"></a>00171 lcc->convs[idx] = cd;
<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (!charset)
-<a name="l00174"></a>00174 <span class="keywordflow">return</span> -2;
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 idx = _find(lcc, charset);
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (idx < 0) {
-<a name="l00178"></a>00178 fprintf(stderr, <span class="stringliteral">"ERROR: could not find charset '%s'\n"</span>, charset);
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> -3;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 iconv_close(lcc->convs[idx]);
-<a name="l00183"></a>00183 free(lcc->names[idx]);
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 lcc->size--;
-<a name="l00186"></a>00186 <span class="keywordflow">for</span> (; idx < lcc->size; idx++) {
-<a name="l00187"></a>00187 lcc->convs[idx] = lcc->convs[idx + 1];
-<a name="l00188"></a>00188 lcc->names[idx] = lcc->names[idx + 1];
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 convs = realloc(lcc->convs, lcc->size * <span class="keyword">sizeof</span>(*convs));
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (convs)
-<a name="l00193"></a>00193 lcc->convs = convs;
-<a name="l00194"></a>00194 <span class="keywordflow">else</span>
-<a name="l00195"></a>00195 perror(<span class="stringliteral">"could not realloc 'convs'"</span>);
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 names = realloc(lcc->names, lcc->size * <span class="keyword">sizeof</span>(*names));
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (names)
-<a name="l00199"></a>00199 lcc->names = names;
-<a name="l00200"></a>00200 <span class="keywordflow">else</span>
-<a name="l00201"></a>00201 perror(<span class="stringliteral">"could not realloc 'names'"</span>);
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keywordflow">return</span> 0;
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00207"></a>00207 _check(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *istr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ilen, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <span class="keywordtype">char</span> *inbuf, *outbuf;
-<a name="l00210"></a>00210 <span class="keywordtype">size_t</span> r, inlen, outlen;
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 inbuf = (<span class="keywordtype">char</span> *)istr;
-<a name="l00213"></a>00213 inlen = ilen;
-<a name="l00214"></a>00214 outbuf = ostr;
-<a name="l00215"></a>00215 outlen = olen;
+<a name="l00173"></a>00173 names = realloc(lcc->names, ns * <span class="keyword">sizeof</span>(*names));
+<a name="l00174"></a>00174 <span class="keywordflow">if</span> (!names)
+<a name="l00175"></a>00175 <span class="keywordflow">goto</span> realloc_error;
+<a name="l00176"></a>00176 lcc->names = names;
+<a name="l00177"></a>00177 lcc->names[idx] = strdup(charset);
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (!lcc->names[idx])
+<a name="l00179"></a>00179 <span class="keywordflow">goto</span> realloc_error;
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 lcc->size = ns;
+<a name="l00182"></a>00182 <span class="keywordflow">return</span> 0;
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 realloc_error:
+<a name="l00185"></a>00185 perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00186"></a>00186 iconv_close(cd);
+<a name="l00187"></a>00187 <span class="keywordflow">return</span> -4;
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00191"></a>00191 _find(<span class="keyword">const</span> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordtype">int</span> i;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++)
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (strcmp(lcc->names[i], charset) == 0)
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> i;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keywordflow">return</span> -1;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201
+<a name="l00210"></a>00210 <span class="keywordtype">int</span>
+<a name="l00211"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">00211</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *charset)
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 iconv_t *convs;
+<a name="l00214"></a>00214 <span class="keywordtype">char</span> **names;
+<a name="l00215"></a>00215 <span class="keywordtype">int</span> idx;
<a name="l00216"></a>00216
-<a name="l00217"></a>00217 iconv(lcc->check, NULL, NULL, NULL, NULL);
-<a name="l00218"></a>00218 r = iconv(lcc->check, &inbuf, &inlen, &outbuf, &outlen);
-<a name="l00219"></a>00219 <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
-<a name="l00220"></a>00220 <span class="keywordflow">return</span> -1;
-<a name="l00221"></a>00221 <span class="keywordflow">else</span>
-<a name="l00222"></a>00222 <span class="keywordflow">return</span> 0;
-<a name="l00223"></a>00223 }
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00226"></a>00226 _conv(iconv_t cd, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
-<a name="l00227"></a>00227 {
-<a name="l00228"></a>00228 <span class="keywordtype">char</span> *inbuf, *outbuf;
-<a name="l00229"></a>00229 <span class="keywordtype">size_t</span> r, inlen, outlen;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 inbuf = *p_str;
-<a name="l00232"></a>00232 inlen = *p_len;
-<a name="l00233"></a>00233 outbuf = ostr;
-<a name="l00234"></a>00234 outlen = olen;
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236 iconv(cd, NULL, NULL, NULL, NULL);
-<a name="l00237"></a>00237 r = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> -1;
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 *p_len = olen - outlen;
-<a name="l00242"></a>00242 free(*p_str);
-<a name="l00243"></a>00243 *p_str = ostr;
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 outbuf = realloc(*p_str, *p_len + 1);
-<a name="l00246"></a>00246 <span class="keywordflow">if</span> (!outbuf)
-<a name="l00247"></a>00247 perror(<span class="stringliteral">"realloc"</span>);
-<a name="l00248"></a>00248 <span class="keywordflow">else</span>
-<a name="l00249"></a>00249 *p_str = outbuf;
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 (*p_str)[*p_len] = <span class="charliteral">'\0'</span>;
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (!lcc)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> -1;
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keywordflow">if</span> (!charset)
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> -2;
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 idx = _find(lcc, charset);
+<a name="l00224"></a>00224 <span class="keywordflow">if</span> (idx < 0) {
+<a name="l00225"></a>00225 fprintf(stderr, <span class="stringliteral">"ERROR: could not find charset '%s'\n"</span>, charset);
+<a name="l00226"></a>00226 <span class="keywordflow">return</span> -3;
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 iconv_close(lcc->convs[idx]);
+<a name="l00230"></a>00230 free(lcc->names[idx]);
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 lcc->size--;
+<a name="l00233"></a>00233 <span class="keywordflow">for</span> (; idx < lcc->size; idx++) {
+<a name="l00234"></a>00234 lcc->convs[idx] = lcc->convs[idx + 1];
+<a name="l00235"></a>00235 lcc->names[idx] = lcc->names[idx + 1];
+<a name="l00236"></a>00236 }
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 convs = realloc(lcc->convs, lcc->size * <span class="keyword">sizeof</span>(*convs));
+<a name="l00239"></a>00239 <span class="keywordflow">if</span> (convs)
+<a name="l00240"></a>00240 lcc->convs = convs;
+<a name="l00241"></a>00241 <span class="keywordflow">else</span>
+<a name="l00242"></a>00242 perror(<span class="stringliteral">"could not realloc 'convs'"</span>);
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 names = realloc(lcc->names, lcc->size * <span class="keyword">sizeof</span>(*names));
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (names)
+<a name="l00246"></a>00246 lcc->names = names;
+<a name="l00247"></a>00247 <span class="keywordflow">else</span>
+<a name="l00248"></a>00248 perror(<span class="stringliteral">"could not realloc 'names'"</span>);
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="keywordflow">return</span> 0;
+<a name="l00251"></a>00251 }
<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <span class="keywordflow">return</span> 0;
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
-<a name="l00265"></a>00265 <span class="keywordtype">int</span>
-<a name="l00266"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">00266</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordtype">char</span> *outstr;
-<a name="l00269"></a>00269 <span class="keywordtype">int</span> i, outlen;
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">if</span> (!lcc)
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> -1;
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (!p_str)
-<a name="l00274"></a>00274 <span class="keywordflow">return</span> -2;
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (!p_len)
-<a name="l00276"></a>00276 <span class="keywordflow">return</span> -3;
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (!*p_str || !*p_len)
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> 0;
-<a name="l00279"></a>00279
-<a name="l00280"></a>00280 outlen = 2 * *p_len;
-<a name="l00281"></a>00281 outstr = malloc(outlen + 1);
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (!outstr) {
-<a name="l00283"></a>00283 perror(<span class="stringliteral">"malloc"</span>);
-<a name="l00284"></a>00284 <span class="keywordflow">return</span> -4;
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 <span class="keywordflow">if</span> (_check(lcc, *p_str, *p_len, outstr, outlen) == 0) {
-<a name="l00288"></a>00288 free(outstr);
-<a name="l00289"></a>00289 <span class="keywordflow">return</span> 0;
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++)
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (_conv(lcc->convs[i], p_str, p_len, outstr, outlen) == 0)
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> 0;
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296 fprintf(stderr,
-<a name="l00297"></a>00297 <span class="stringliteral">"WARNING: could not convert '%*s' to any charset, use fallback\n"</span>,
-<a name="l00298"></a>00298 *p_len, *p_str);
-<a name="l00299"></a>00299 i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
-<a name="l00300"></a>00300 <span class="keywordflow">if</span> (i < 0) {
-<a name="l00301"></a>00301 memset(*p_str, <span class="charliteral">'?'</span>, *p_len);
-<a name="l00302"></a>00302 free(outstr);
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304 <span class="keywordflow">return</span> i;
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306
-<a name="l00316"></a>00316 <span class="keywordtype">int</span>
-<a name="l00317"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">00317</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="keywordtype">char</span> *outstr;
-<a name="l00320"></a>00320 <span class="keywordtype">int</span> r, outlen;
-<a name="l00321"></a>00321
-<a name="l00322"></a>00322 <span class="keywordflow">if</span> (!lcc)
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> -1;
-<a name="l00324"></a>00324 <span class="keywordflow">if</span> (!str || !len)
-<a name="l00325"></a>00325 <span class="keywordflow">return</span> 0;
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327 outlen = 2 * len;
-<a name="l00328"></a>00328 outstr = malloc(outlen);
-<a name="l00329"></a>00329 <span class="keywordflow">if</span> (!outstr) {
-<a name="l00330"></a>00330 perror(<span class="stringliteral">"malloc"</span>);
-<a name="l00331"></a>00331 <span class="keywordflow">return</span> -2;
-<a name="l00332"></a>00332 }
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 r = _check(lcc, str, len, outstr, outlen);
-<a name="l00335"></a>00335 free(outstr);
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> r;
-<a name="l00337"></a>00337 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00253"></a>00253 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00254"></a>00254 _check(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *istr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ilen, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordtype">char</span> *inbuf, *outbuf;
+<a name="l00257"></a>00257 <span class="keywordtype">size_t</span> r, inlen, outlen;
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (lcc->check == (iconv_t)-1)
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> -1;
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 inbuf = (<span class="keywordtype">char</span> *)istr;
+<a name="l00263"></a>00263 inlen = ilen;
+<a name="l00264"></a>00264 outbuf = ostr;
+<a name="l00265"></a>00265 outlen = olen;
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 iconv(lcc->check, NULL, NULL, NULL, NULL);
+<a name="l00268"></a>00268 r = iconv(lcc->check, &inbuf, &inlen, &outbuf, &outlen);
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
+<a name="l00270"></a>00270 <span class="keywordflow">return</span> -1;
+<a name="l00271"></a>00271 <span class="keywordflow">else</span>
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> 0;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00276"></a>00276 _conv(iconv_t cd, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len, <span class="keywordtype">char</span> *ostr, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> olen)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 <span class="keywordtype">char</span> *inbuf, *outbuf;
+<a name="l00279"></a>00279 <span class="keywordtype">size_t</span> r, inlen, outlen;
+<a name="l00280"></a>00280
+<a name="l00281"></a>00281 inbuf = *p_str;
+<a name="l00282"></a>00282 inlen = *p_len;
+<a name="l00283"></a>00283 outbuf = ostr;
+<a name="l00284"></a>00284 outlen = olen;
+<a name="l00285"></a>00285
+<a name="l00286"></a>00286 iconv(cd, NULL, NULL, NULL, NULL);
+<a name="l00287"></a>00287 r = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
+<a name="l00288"></a>00288 <span class="keywordflow">if</span> (r == (<span class="keywordtype">size_t</span>)-1)
+<a name="l00289"></a>00289 <span class="keywordflow">return</span> -1;
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 *p_len = olen - outlen;
+<a name="l00292"></a>00292 free(*p_str);
+<a name="l00293"></a>00293 *p_str = ostr;
+<a name="l00294"></a>00294
+<a name="l00295"></a>00295 outbuf = realloc(*p_str, *p_len + 1);
+<a name="l00296"></a>00296 <span class="keywordflow">if</span> (!outbuf)
+<a name="l00297"></a>00297 perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00298"></a>00298 <span class="keywordflow">else</span>
+<a name="l00299"></a>00299 *p_str = outbuf;
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 (*p_str)[*p_len] = <span class="charliteral">'\0'</span>;
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keywordflow">return</span> 0;
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305
+<a name="l00306"></a>00306 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00307"></a>00307 _fix_non_ascii(<span class="keywordtype">char</span> *s, <span class="keywordtype">int</span> len)
+<a name="l00308"></a>00308 {
+<a name="l00309"></a>00309 <span class="keywordflow">for</span> (; len > 0; len--, s++)
+<a name="l00310"></a>00310 <span class="keywordflow">if</span> (!isprint(*s))
+<a name="l00311"></a>00311 *s = <span class="charliteral">'?'</span>;
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313
+<a name="l00327"></a>00327 <span class="keywordtype">int</span>
+<a name="l00328"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">00328</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00329"></a>00329 {
+<a name="l00330"></a>00330 <span class="keywordtype">char</span> *outstr;
+<a name="l00331"></a>00331 <span class="keywordtype">int</span> i, outlen;
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333 <span class="keywordflow">if</span> (!lcc)
+<a name="l00334"></a>00334 <span class="keywordflow">return</span> -1;
+<a name="l00335"></a>00335 <span class="keywordflow">if</span> (!p_str)
+<a name="l00336"></a>00336 <span class="keywordflow">return</span> -2;
+<a name="l00337"></a>00337 <span class="keywordflow">if</span> (!p_len)
+<a name="l00338"></a>00338 <span class="keywordflow">return</span> -3;
+<a name="l00339"></a>00339 <span class="keywordflow">if</span> (!*p_str || !*p_len)
+<a name="l00340"></a>00340 <span class="keywordflow">return</span> 0;
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 outlen = 2 * *p_len;
+<a name="l00343"></a>00343 outstr = malloc(outlen + 1);
+<a name="l00344"></a>00344 <span class="keywordflow">if</span> (!outstr) {
+<a name="l00345"></a>00345 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00346"></a>00346 <span class="keywordflow">return</span> -4;
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348
+<a name="l00349"></a>00349 <span class="keywordflow">if</span> (_check(lcc, *p_str, *p_len, outstr, outlen) == 0) {
+<a name="l00350"></a>00350 free(outstr);
+<a name="l00351"></a>00351 <span class="keywordflow">return</span> 0;
+<a name="l00352"></a>00352 }
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++)
+<a name="l00355"></a>00355 <span class="keywordflow">if</span> (_conv(lcc->convs[i], p_str, p_len, outstr, outlen) == 0)
+<a name="l00356"></a>00356 <span class="keywordflow">return</span> 0;
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358 <span class="keywordflow">if</span> (lcc->fallback == (iconv_t)-1)
+<a name="l00359"></a>00359 <span class="keywordflow">return</span> -5;
+<a name="l00360"></a>00360
+<a name="l00361"></a>00361 fprintf(stderr,
+<a name="l00362"></a>00362 <span class="stringliteral">"WARNING: could not convert '%*s' to any charset, use fallback\n"</span>,
+<a name="l00363"></a>00363 *p_len, *p_str);
+<a name="l00364"></a>00364 i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
+<a name="l00365"></a>00365 <span class="keywordflow">if</span> (i < 0) {
+<a name="l00366"></a>00366 _fix_non_ascii(*p_str, *p_len);
+<a name="l00367"></a>00367 free(outstr);
+<a name="l00368"></a>00368 }
+<a name="l00369"></a>00369 <span class="keywordflow">return</span> i;
+<a name="l00370"></a>00370 }
+<a name="l00371"></a>00371
+<a name="l00385"></a>00385 <span class="keywordtype">int</span>
+<a name="l00386"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">00386</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00387"></a>00387 {
+<a name="l00388"></a>00388 <span class="keywordtype">char</span> *outstr;
+<a name="l00389"></a>00389 <span class="keywordtype">int</span> i, outlen;
+<a name="l00390"></a>00390
+<a name="l00391"></a>00391 <span class="keywordflow">if</span> (!lcc)
+<a name="l00392"></a>00392 <span class="keywordflow">return</span> -1;
+<a name="l00393"></a>00393 <span class="keywordflow">if</span> (!p_str)
+<a name="l00394"></a>00394 <span class="keywordflow">return</span> -2;
+<a name="l00395"></a>00395 <span class="keywordflow">if</span> (!p_len)
+<a name="l00396"></a>00396 <span class="keywordflow">return</span> -3;
+<a name="l00397"></a>00397 <span class="keywordflow">if</span> (!*p_str || !*p_len)
+<a name="l00398"></a>00398 <span class="keywordflow">return</span> 0;
+<a name="l00399"></a>00399
+<a name="l00400"></a>00400 outlen = 2 * *p_len;
+<a name="l00401"></a>00401 outstr = malloc(outlen + 1);
+<a name="l00402"></a>00402 <span class="keywordflow">if</span> (!outstr) {
+<a name="l00403"></a>00403 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00404"></a>00404 <span class="keywordflow">return</span> -4;
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 <span class="keywordflow">for</span> (i = 0; i < lcc->size; i++)
+<a name="l00408"></a>00408 <span class="keywordflow">if</span> (_conv(lcc->convs[i], p_str, p_len, outstr, outlen) == 0)
+<a name="l00409"></a>00409 <span class="keywordflow">return</span> 0;
+<a name="l00410"></a>00410
+<a name="l00411"></a>00411 <span class="keywordflow">if</span> (lcc->fallback == (iconv_t)-1)
+<a name="l00412"></a>00412 <span class="keywordflow">return</span> -5;
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 fprintf(stderr,
+<a name="l00415"></a>00415 <span class="stringliteral">"WARNING: could not convert '%*s' to any charset, use fallback\n"</span>,
+<a name="l00416"></a>00416 *p_len, *p_str);
+<a name="l00417"></a>00417 i = _conv(lcc->fallback, p_str, p_len, outstr, outlen);
+<a name="l00418"></a>00418 <span class="keywordflow">if</span> (i < 0) {
+<a name="l00419"></a>00419 _fix_non_ascii(*p_str, *p_len);
+<a name="l00420"></a>00420 free(outstr);
+<a name="l00421"></a>00421 }
+<a name="l00422"></a>00422 <span class="keywordflow">return</span> i;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00439"></a>00439 <span class="keywordtype">int</span>
+<a name="l00440"></a><a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">00440</a> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
+<a name="l00441"></a>00441 {
+<a name="l00442"></a>00442 <span class="keywordtype">char</span> *outstr;
+<a name="l00443"></a>00443 <span class="keywordtype">int</span> r, outlen;
+<a name="l00444"></a>00444
+<a name="l00445"></a>00445 <span class="keywordflow">if</span> (!lcc)
+<a name="l00446"></a>00446 <span class="keywordflow">return</span> -1;
+<a name="l00447"></a>00447 <span class="keywordflow">if</span> (!str || !len)
+<a name="l00448"></a>00448 <span class="keywordflow">return</span> 0;
+<a name="l00449"></a>00449
+<a name="l00450"></a>00450 outlen = 2 * len;
+<a name="l00451"></a>00451 outstr = malloc(outlen);
+<a name="l00452"></a>00452 <span class="keywordflow">if</span> (!outstr) {
+<a name="l00453"></a>00453 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00454"></a>00454 <span class="keywordflow">return</span> -2;
+<a name="l00455"></a>00455 }
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 r = _check(lcc, str, len, outstr, outlen);
+<a name="l00458"></a>00458 free(outstr);
+<a name="l00459"></a>00459 <span class="keywordflow">return</span> r;
+<a name="l00460"></a>00460 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_charset_conv.c File Reference</h1><code>#include "<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>"</code><br>
<code>#include <iconv.h></code><br>
<code>#include <stdio.h></code><br>
<code>#include <stdlib.h></code><br>
<code>#include <string.h></code><br>
<code>#include <errno.h></code><br>
+<code>#include <ctype.h></code><br>
<p>
-Include dependency graph for lightmediascanner_charset_conv.c:<p><center><img src="lightmediascanner__charset__conv_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_charset_conv.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_charset_conv.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__charset__conv_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_charset_conv.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_charset_conv.c_map">
-<area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="297,5,503,32"></map>
+<area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="5,84,259,110"></map>
+</div>
<p>
<a href="lightmediascanner__charset__conv_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback)</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len)</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len)</td></tr>
</table>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr><td valign="top"></td><td valign="top"><em>p_len</em> </td><td>string size.</td></tr>
</table>
</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>the check for string being already UTF-8 is not reliable, some cases might show false positives (UTF-16 is considered UTF-8). </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check()</a></dd></dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00266">266</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00328">328</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="0a3006beae6fc8c59eca75468c1bc000"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_add" ref="0a3006beae6fc8c59eca75468c1bc000" args="(lms_charset_conv_t *lcc, const char *charset)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00098">98</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00451">lms_charset_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00480">lms_charset_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f069b89e828896690fdd919e5b042c7d"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_check" ref="f069b89e828896690fdd919e5b042c7d" args="(lms_charset_conv_t *lcc, const char *str, unsigned int len)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>string size.</td></tr>
</table>
</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>current implementation is not reliable, it tries to convert from UTF-8 to UTF-8. Some cases, like ISO-8859-1 will work, but some like UTF-16 to UTF-8 will say it's already in the correct charset, even if it's not.</dd></dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if string is already UTF-8. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00317">317</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00440">440</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="ad60dd3a2c2ebcf9ee1100986fc572e4"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_del" ref="ad60dd3a2c2ebcf9ee1100986fc572e4" args="(lms_charset_conv_t *lcc, const char *charset)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00211">211</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00503">lms_charset_del()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="8ea844f16120ba4000b7b142192e91e4"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv_force" ref="8ea844f16120ba4000b7b142192e91e4" args="(lms_charset_conv_t *lcc, char **p_str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int lms_charset_conv_force </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td>
+ <td class="paramname"> <em>lcc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char ** </td>
+ <td class="paramname"> <em>p_str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int * </td>
+ <td class="paramname"> <em>p_len</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00164">164</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00474">lms_charset_del()</a>.
+Forcefully do charset conversion to UTF-8.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>lcc</em> </td><td>existing Light Media Scanner charset conversion. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p_str</em> </td><td>string to be converted. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p_len</em> </td><td>string size.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>This function does not check for the string being in UTF-8 before doing the conversion, use it if you are sure about the charset. In this case you'll usually have just one charset added.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8c-source.html#l00386">386</a> of file <a class="el" href="lightmediascanner__charset__conv_8c-source.html">lightmediascanner_charset_conv.c</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="297,5,503,32">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="5,84,259,110">
-a9fb93c4b14d546e8218fa70f21420bb
\ No newline at end of file
+8966d27edf5a5baa5f6b80360ed4e80a
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_charset_conv.h</h1><a href="lightmediascanner__charset__conv_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_CHARSET_CONV_H_</span>
<a name="l00022"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_ 1</span>
<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00064"></a>00064 <span class="preprocessor">#endif</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span>
-<a name="l00072"></a><a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">00072</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> lms_charset_conv_t;
+<a name="l00072"></a><a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">00072</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>;
<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> lms_charset_conv_t *<a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
-<a name="l00075"></a>00075 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms_charset_conv_t *lcc) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00076"></a>00076 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(lms_charset_conv_t *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
-<a name="l00077"></a>00077 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(lms_charset_conv_t *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(lms_charset_conv_t *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) GNUC_NON_NULL(1, 2, 3);
-<a name="l00080"></a>00080 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(lms_charset_conv_t *lcc, const <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len) GNUC_NON_NULL(1, 2);
-<a name="l00081"></a>00081
-<a name="l00085"></a>00085 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span>}
-<a name="l00087"></a>00087 <span class="preprocessor">#endif</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_CHARSET_CONV_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00074"></a>00074 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a>(<span class="keywordtype">int</span> use_check, <span class="keywordtype">int</span> use_fallback) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> <a class="code" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a>;
+<a name="l00075"></a>00075 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>(<span class="keywordtype">void</span>) <a class="code" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a> GNUC_WARN_UNUSED_RESULT;
+<a name="l00076"></a>00076 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00077"></a>00077 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
+<a name="l00078"></a>00078 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *charset) GNUC_NON_NULL(1, 2);
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#35b728d3c5cb940027ebc47589971b25">lms_charset_conv</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) GNUC_NON_NULL(1, 2, 3);
+<a name="l00081"></a>00081 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#8ea844f16120ba4000b7b142192e91e4">lms_charset_conv_force</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, <span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) GNUC_NON_NULL(1, 2, 3);
+<a name="l00082"></a>00082 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__charset__conv_8c.html#f069b89e828896690fdd919e5b042c7d">lms_charset_conv_check</a>(<a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const <span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len) GNUC_NON_NULL(1, 2);
+<a name="l00083"></a>00083
+<a name="l00087"></a>00087 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>}
+<a name="l00089"></a>00089 <span class="preprocessor">#endif</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_CHARSET_CONV_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_charset_conv.h File Reference</h1>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__charset__conv_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_charset_conv.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__charset__conv_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_charset_conv.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_charset_conv.hdep_map">
-<area shape="rect" href="lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="315,145,520,172"><area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="597,95,805,121"><area shape="rect" href="lightmediascanner__charset__conv_8c.html" title="src/lib/lightmediascanner_charset_conv.c" alt="" coords="296,196,539,223"><area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="901,5,1067,32"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="587,183,816,209"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="608,259,795,285"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="883,107,1085,133"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="879,56,1089,83"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="873,259,1095,285"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="865,157,1103,184"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="872,309,1096,336"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="869,360,1099,387"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="873,208,1095,235"></map>
+<area shape="rect" href="lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="529,84,772,111"><area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="365,161,619,188"><area shape="rect" href="lightmediascanner__charset__conv_8c.html" title="src/lib/lightmediascanner_charset_conv.c" alt="" coords="796,84,1092,111"><area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,239,203,265"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="933,161,1208,188"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1405,161,1627,188"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="507,239,752,265"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="227,239,483,265"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1672,239,1936,265"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,239,1061,265"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1960,239,2229,265"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1085,239,1360,265"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1384,239,1648,265"></map>
+</div>
<p>
<a href="lightmediascanner__charset__conv_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_charset_conv </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_charset_conv </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g893421821eacaa0fd2020c872361af15">lms_charset_conv_new_full</a> (int use_check, int use_fallback) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a> (void) GNUC_MALLOC GNUC_WARN_UNUSED_RESULT</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc) GNUC_NON_NULL(1)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gd843f59abac208048f13437534d589fc">lms_charset_conv</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g9a610040a6380c745277effc5c4c9112">lms_charset_conv_force</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int API <br>
-int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#g3d6c281f7b3cf9fb0c299c0abe03f681">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
+int API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gbc8903e67c3c7eefa902cbb2bd5e3338">lms_charset_conv_check</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *str, unsigned int len) GNUC_NON_NULL(1</td></tr>
</table>
<hr><h2>Define Documentation</h2>
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00056">56</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00056">56</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__charset__conv_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="315,145,520,172">
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="597,95,805,121">
-<area shape="rect" href="$lightmediascanner__charset__conv_8c.html" title="src/lib/lightmediascanner_charset_conv.c" alt="" coords="296,196,539,223">
-<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="901,5,1067,32">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="587,183,816,209">
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="608,259,795,285">
-<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="883,107,1085,133">
-<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="879,56,1089,83">
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="873,259,1095,285">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="865,157,1103,184">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="872,309,1096,336">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="869,360,1099,387">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="873,208,1095,235">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="src/lib/lightmediascanner_plugin.h" alt="" coords="529,84,772,111">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="365,161,619,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8c.html" title="src/lib/lightmediascanner_charset_conv.c" alt="" coords="796,84,1092,111">
+<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,239,203,265">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="933,161,1208,188">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1405,161,1627,188">
+<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="507,239,752,265">
+<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="227,239,483,265">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1672,239,1936,265">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,239,1061,265">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1960,239,2229,265">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1085,239,1360,265">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1384,239,1648,265">
-aa3d888691589f3b2f80ad8c0ab8be67
\ No newline at end of file
+daa75498a63084a89de988844aa048f8
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_check.c</h1><a href="lightmediascanner__check_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
<a name="l00051"></a>00051 sqlite3_stmt *update_file_info;
<a name="l00052"></a>00052 };
<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="comment">/***********************************************************************</span>
-<a name="l00056"></a>00056 <span class="comment"> * Master-Slave communication.</span>
-<a name="l00057"></a>00057 <span class="comment"> ***********************************************************************/</span>
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keyword">struct </span>comm_finfo {
-<a name="l00060"></a>00060 <span class="keywordtype">int</span> path_len;
-<a name="l00061"></a>00061 <span class="keywordtype">int</span> base;
-<a name="l00062"></a>00062 int64_t id;
-<a name="l00063"></a>00063 time_t mtime;
-<a name="l00064"></a>00064 time_t dtime;
-<a name="l00065"></a>00065 <span class="keywordtype">size_t</span> size;
-<a name="l00066"></a>00066 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
-<a name="l00067"></a><a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">00067</a> <span class="preprocessor">#define COMM_FINFO_FLAG_OUTDATED 1</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span>};
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00071"></a>00071 _master_send_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keyword">struct </span>comm_finfo ci;
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 ci.path_len = finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>;
-<a name="l00076"></a>00076 ci.base = finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>;
-<a name="l00077"></a>00077 ci.id = finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>;
-<a name="l00078"></a>00078 ci.mtime = finfo.<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>;
-<a name="l00079"></a>00079 ci.dtime = finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>;
-<a name="l00080"></a>00080 ci.size = finfo.<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>;
-<a name="l00081"></a>00081 ci.flags = flags;
+<a name="l00054"></a>00054 <span class="keyword">struct </span>single_process_db {
+<a name="l00055"></a>00055 sqlite3 *handle;
+<a name="l00056"></a>00056 sqlite3_stmt *get_files;
+<a name="l00057"></a>00057 sqlite3_stmt *transaction_begin;
+<a name="l00058"></a>00058 sqlite3_stmt *transaction_commit;
+<a name="l00059"></a>00059 sqlite3_stmt *delete_file_info;
+<a name="l00060"></a>00060 sqlite3_stmt *update_file_info;
+<a name="l00061"></a>00061 };
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="comment">/***********************************************************************</span>
+<a name="l00064"></a>00064 <span class="comment"> * Master-Slave communication.</span>
+<a name="l00065"></a>00065 <span class="comment"> ***********************************************************************/</span>
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">struct </span>comm_finfo {
+<a name="l00068"></a>00068 <span class="keywordtype">int</span> path_len;
+<a name="l00069"></a>00069 <span class="keywordtype">int</span> base;
+<a name="l00070"></a>00070 int64_t id;
+<a name="l00071"></a>00071 time_t mtime;
+<a name="l00072"></a>00072 time_t dtime;
+<a name="l00073"></a>00073 <span class="keywordtype">size_t</span> size;
+<a name="l00074"></a>00074 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00075"></a><a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">00075</a> <span class="preprocessor">#define COMM_FINFO_FLAG_OUTDATED 1</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>};
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00079"></a>00079 _master_send_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags)
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="keyword">struct </span>comm_finfo ci;
<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &ci, <span class="keyword">sizeof</span>(ci)) < 0) {
-<a name="l00084"></a>00084 perror(<span class="stringliteral">"write"</span>);
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> -1;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>) < 0) {
-<a name="l00089"></a>00089 perror(<span class="stringliteral">"write"</span>);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span> -1;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keywordflow">return</span> 0;
-<a name="l00094"></a>00094 }
+<a name="l00083"></a>00083 ci.path_len = finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>;
+<a name="l00084"></a>00084 ci.base = finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>;
+<a name="l00085"></a>00085 ci.id = finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>;
+<a name="l00086"></a>00086 ci.mtime = finfo.<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>;
+<a name="l00087"></a>00087 ci.dtime = finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>;
+<a name="l00088"></a>00088 ci.size = finfo.<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>;
+<a name="l00089"></a>00089 ci.flags = flags;
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &ci, <span class="keyword">sizeof</span>(ci)) < 0) {
+<a name="l00092"></a>00092 perror(<span class="stringliteral">"write"</span>);
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> -1;
+<a name="l00094"></a>00094 }
<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00097"></a>00097 _master_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keyword">struct </span>comm_finfo ci = {-1, -1, -1, -1, -1, -1, 0};
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>) < 0) {
+<a name="l00097"></a>00097 perror(<span class="stringliteral">"write"</span>);
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> -1;
+<a name="l00099"></a>00099 }
<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &ci, <span class="keyword">sizeof</span>(ci)) < 0) {
-<a name="l00102"></a>00102 perror(<span class="stringliteral">"write"</span>);
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> -1;
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> 0;
-<a name="l00107"></a>00107 }
+<a name="l00101"></a>00101 <span class="keywordflow">return</span> 0;
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00105"></a>00105 _master_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master)
+<a name="l00106"></a>00106 {
+<a name="l00107"></a>00107 <span class="keyword">struct </span>comm_finfo ci = {-1, -1, -1, -1, -1, -1, 0};
<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00110"></a>00110 _master_recv_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">struct</span> pollfd *pfd, <span class="keywordtype">int</span> *reply, <span class="keywordtype">int</span> timeout)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordtype">int</span> r;
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (write(master-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &ci, <span class="keyword">sizeof</span>(ci)) < 0) {
+<a name="l00110"></a>00110 perror(<span class="stringliteral">"write"</span>);
+<a name="l00111"></a>00111 <span class="keywordflow">return</span> -1;
+<a name="l00112"></a>00112 }
<a name="l00113"></a>00113
-<a name="l00114"></a>00114 r = poll(pfd, 1, timeout);
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (r < 0) {
-<a name="l00116"></a>00116 perror(<span class="stringliteral">"poll"</span>);
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> -1;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (r == 0)
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> 1;
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (read(master-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, reply, <span class="keyword">sizeof</span>(*reply)) != <span class="keyword">sizeof</span>(*reply)) {
-<a name="l00124"></a>00124 perror(<span class="stringliteral">"read"</span>);
-<a name="l00125"></a>00125 <span class="keywordflow">return</span> -2;
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> 0;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00118"></a>00118 _master_recv_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keyword">struct</span> pollfd *pfd, <span class="keywordtype">int</span> *reply, <span class="keywordtype">int</span> timeout)
+<a name="l00119"></a>00119 {
+<a name="l00120"></a>00120 <span class="keywordtype">int</span> r;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 r = poll(pfd, 1, timeout);
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00124"></a>00124 perror(<span class="stringliteral">"poll"</span>);
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> -1;
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="keywordflow">return</span> 0;
-<a name="l00129"></a>00129 }
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (r == 0)
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> 1;
<a name="l00130"></a>00130
-<a name="l00131"></a>00131 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00132"></a>00132 _slave_send_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> reply)
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (write(slave-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &reply, <span class="keyword">sizeof</span>(reply)) == 0) {
-<a name="l00135"></a>00135 perror(<span class="stringliteral">"write"</span>);
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> -1;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 <span class="keywordflow">return</span> 0;
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00142"></a>00142 _slave_recv_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *flags)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 <span class="keyword">struct </span>comm_finfo ci;
-<a name="l00145"></a>00145 <span class="keyword">static</span> <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 1];
-<a name="l00146"></a>00146 <span class="keywordtype">int</span> r;
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 r = read(slave-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, &ci, <span class="keyword">sizeof</span>(ci));
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (r != <span class="keyword">sizeof</span>(ci)) {
-<a name="l00150"></a>00150 perror(<span class="stringliteral">"read"</span>);
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> -1;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = ci.path_len;
-<a name="l00155"></a>00155 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = ci.base;
-<a name="l00156"></a>00156 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = ci.id;
-<a name="l00157"></a>00157 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = ci.mtime;
-<a name="l00158"></a>00158 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = ci.dtime;
-<a name="l00159"></a>00159 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = ci.size;
-<a name="l00160"></a>00160 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = NULL;
-<a name="l00161"></a>00161 *flags = ci.flags;
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keywordflow">if</span> (ci.path_len == -1)
-<a name="l00164"></a>00164 <span class="keywordflow">return</span> 0;
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (ci.path_len > <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
-<a name="l00167"></a>00167 fprintf(stderr, <span class="stringliteral">"ERROR: path too long (%d/%d)\n"</span>,
-<a name="l00168"></a>00168 ci.path_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>);
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> -2;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 r = read(slave-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, path, ci.path_len);
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (r != ci.path_len) {
-<a name="l00174"></a>00174 fprintf(stderr, <span class="stringliteral">"ERROR: could not read whole path %d/%d\n"</span>,
-<a name="l00175"></a>00175 r, ci.path_len);
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> -3;
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179 path[ci.path_len] = 0;
-<a name="l00180"></a>00180 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> 0;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="comment">/***********************************************************************</span>
-<a name="l00186"></a>00186 <span class="comment"> * Slave-side.</span>
-<a name="l00187"></a>00187 <span class="comment"> ***********************************************************************/</span>
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00190"></a>00190 _slave_db_compile_all_stmts(<span class="keyword">struct</span> slave_db *db)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 sqlite3 *handle;
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 handle = db->handle;
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 db->transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> (!db->transaction_begin)
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> -1;
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 db->transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
-<a name="l00201"></a>00201 <span class="keywordflow">if</span> (!db->transaction_commit)
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> -2;
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (read(master-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, reply, <span class="keyword">sizeof</span>(*reply)) != <span class="keyword">sizeof</span>(*reply)) {
+<a name="l00132"></a>00132 perror(<span class="stringliteral">"read"</span>);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> -2;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> 0;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00140"></a>00140 _slave_send_reply(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> reply)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 <span class="keywordflow">if</span> (write(slave-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &reply, <span class="keyword">sizeof</span>(reply)) == 0) {
+<a name="l00143"></a>00143 perror(<span class="stringliteral">"write"</span>);
+<a name="l00144"></a>00144 <span class="keywordflow">return</span> -1;
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 <span class="keywordflow">return</span> 0;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00150"></a>00150 _slave_recv_file(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *flags)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 <span class="keyword">struct </span>comm_finfo ci;
+<a name="l00153"></a>00153 <span class="keyword">static</span> <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 1];
+<a name="l00154"></a>00154 <span class="keywordtype">int</span> r;
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 r = read(slave-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, &ci, <span class="keyword">sizeof</span>(ci));
+<a name="l00157"></a>00157 <span class="keywordflow">if</span> (r != <span class="keyword">sizeof</span>(ci)) {
+<a name="l00158"></a>00158 perror(<span class="stringliteral">"read"</span>);
+<a name="l00159"></a>00159 <span class="keywordflow">return</span> -1;
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = ci.path_len;
+<a name="l00163"></a>00163 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = ci.base;
+<a name="l00164"></a>00164 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = ci.id;
+<a name="l00165"></a>00165 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = ci.mtime;
+<a name="l00166"></a>00166 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = ci.dtime;
+<a name="l00167"></a>00167 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = ci.size;
+<a name="l00168"></a>00168 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = NULL;
+<a name="l00169"></a>00169 *flags = ci.flags;
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keywordflow">if</span> (ci.path_len == -1)
+<a name="l00172"></a>00172 <span class="keywordflow">return</span> 0;
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keywordflow">if</span> (ci.path_len > <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00175"></a>00175 fprintf(stderr, <span class="stringliteral">"ERROR: path too long (%d/%d)\n"</span>,
+<a name="l00176"></a>00176 ci.path_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>);
+<a name="l00177"></a>00177 <span class="keywordflow">return</span> -2;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 r = read(slave-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, path, ci.path_len);
+<a name="l00181"></a>00181 <span class="keywordflow">if</span> (r != ci.path_len) {
+<a name="l00182"></a>00182 fprintf(stderr, <span class="stringliteral">"ERROR: could not read whole path %d/%d\n"</span>,
+<a name="l00183"></a>00183 r, ci.path_len);
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> -3;
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 path[ci.path_len] = 0;
+<a name="l00188"></a>00188 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
+<a name="l00189"></a>00189 <span class="keywordflow">return</span> 0;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="comment">/***********************************************************************</span>
+<a name="l00194"></a>00194 <span class="comment"> * Slave-side.</span>
+<a name="l00195"></a>00195 <span class="comment"> ***********************************************************************/</span>
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00198"></a>00198 _slave_db_compile_all_stmts(<span class="keyword">struct</span> slave_db *db)
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200 sqlite3 *handle;
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 handle = db->handle;
<a name="l00203"></a>00203
-<a name="l00204"></a>00204 db->delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (!db->delete_file_info)
-<a name="l00206"></a>00206 <span class="keywordflow">return</span> -3;
+<a name="l00204"></a>00204 db->transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (!db->transaction_begin)
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> -1;
<a name="l00207"></a>00207
-<a name="l00208"></a>00208 db->update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
-<a name="l00209"></a>00209 <span class="keywordflow">if</span> (!db->update_file_info)
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> -4;
+<a name="l00208"></a>00208 db->transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (!db->transaction_commit)
+<a name="l00210"></a>00210 <span class="keywordflow">return</span> -2;
<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> 0;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 <span class="keyword">static</span> <span class="keyword">struct </span>slave_db *
-<a name="l00216"></a>00216 _slave_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <span class="keyword">struct </span>slave_db *db;
+<a name="l00212"></a>00212 db->delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00213"></a>00213 <span class="keywordflow">if</span> (!db->delete_file_info)
+<a name="l00214"></a>00214 <span class="keywordflow">return</span> -3;
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 db->update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (!db->update_file_info)
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> -4;
<a name="l00219"></a>00219
-<a name="l00220"></a>00220 db = calloc(1, <span class="keyword">sizeof</span>(*db));
-<a name="l00221"></a>00221 <span class="keywordflow">if</span> (!db) {
-<a name="l00222"></a>00222 perror(<span class="stringliteral">"calloc"</span>);
-<a name="l00223"></a>00223 <span class="keywordflow">return</span> NULL;
-<a name="l00224"></a>00224 }
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 <span class="keywordflow">if</span> (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
-<a name="l00227"></a>00227 fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
-<a name="l00228"></a>00228 db_path, sqlite3_errmsg(db->handle));
-<a name="l00229"></a>00229 <span class="keywordflow">goto</span> error;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <span class="keywordflow">return</span> db;
+<a name="l00220"></a>00220 <span class="keywordflow">return</span> 0;
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">static</span> <span class="keyword">struct </span>slave_db *
+<a name="l00224"></a>00224 _slave_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226 <span class="keyword">struct </span>slave_db *db;
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> (!db) {
+<a name="l00230"></a>00230 perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00231"></a>00231 <span class="keywordflow">return</span> NULL;
+<a name="l00232"></a>00232 }
<a name="l00233"></a>00233
-<a name="l00234"></a>00234 error:
-<a name="l00235"></a>00235 sqlite3_close(db->handle);
-<a name="l00236"></a>00236 free(db);
-<a name="l00237"></a>00237 <span class="keywordflow">return</span> NULL;
-<a name="l00238"></a>00238 }
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+<a name="l00235"></a>00235 fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00236"></a>00236 db_path, sqlite3_errmsg(db->handle));
+<a name="l00237"></a>00237 <span class="keywordflow">goto</span> error;
+<a name="l00238"></a>00238 }
<a name="l00239"></a>00239
-<a name="l00240"></a>00240 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00241"></a>00241 _slave_db_close(<span class="keyword">struct</span> slave_db *db)
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 <span class="keywordflow">if</span> (db->transaction_begin)
-<a name="l00244"></a>00244 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">if</span> (db->transaction_commit)
-<a name="l00247"></a>00247 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> (db->delete_file_info)
-<a name="l00250"></a>00250 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (db->update_file_info)
-<a name="l00253"></a>00253 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->update_file_info, <span class="stringliteral">"update_file_info"</span>);
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <span class="keywordflow">if</span> (sqlite3_close(db->handle) != SQLITE_OK) {
-<a name="l00256"></a>00256 fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (slave): %s\n"</span>,
-<a name="l00257"></a>00257 sqlite3_errmsg(db->handle));
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> -1;
-<a name="l00259"></a>00259 }
-<a name="l00260"></a>00260 free(db);
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 <span class="keywordflow">return</span> 0;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00266"></a>00266 _init_sync_send(<span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">return</span> _slave_send_reply(fds, 0);
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00272"></a>00272 _slave_work_int(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>, <span class="keyword">struct</span> slave_db *db)
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
-<a name="l00275"></a>00275 <span class="keywordtype">void</span> **parser_match;
-<a name="l00276"></a>00276 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> counter, flags;
-<a name="l00277"></a>00277 <span class="keywordtype">int</span> r;
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 parser_match = malloc(lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
-<a name="l00280"></a>00280 <span class="keywordflow">if</span> (!parser_match) {
-<a name="l00281"></a>00281 perror(<span class="stringliteral">"malloc"</span>);
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> -6;
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 _init_sync_send(fds);
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 counter = 0;
-<a name="l00288"></a>00288 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <span class="keywordflow">while</span> (((r = _slave_recv_file(fds, &finfo, &flags)) == 0) &&
-<a name="l00291"></a>00291 finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> > 0) {
-<a name="l00292"></a>00292 r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db->update_file_info, &finfo);
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (r < 0)
-<a name="l00294"></a>00294 fprintf(stderr, <span class="stringliteral">"ERROR: could not update path in DB\n"</span>);
-<a name="l00295"></a>00295 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags & <a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">COMM_FINFO_FLAG_OUTDATED</a>) {
-<a name="l00296"></a>00296 <span class="keywordtype">int</span> used;
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &finfo);
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (!used)
-<a name="l00300"></a>00300 r = 0;
-<a name="l00301"></a>00301 <span class="keywordflow">else</span> {
-<a name="l00302"></a>00302 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db->handle, parser_match, &finfo);
-<a name="l00303"></a>00303 <span class="keywordflow">if</span> (r < 0) {
-<a name="l00304"></a>00304 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
-<a name="l00305"></a>00305 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
-<a name="l00306"></a>00306 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db->delete_file_info, &finfo);
-<a name="l00307"></a>00307 }
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 _slave_send_reply(fds, r);
-<a name="l00312"></a>00312 counter++;
-<a name="l00313"></a>00313 <span class="keywordflow">if</span> (counter > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
-<a name="l00314"></a>00314 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
-<a name="l00315"></a>00315 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
-<a name="l00316"></a>00316 counter = 0;
-<a name="l00317"></a>00317 }
+<a name="l00240"></a>00240 <span class="keywordflow">return</span> db;
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 error:
+<a name="l00243"></a>00243 sqlite3_close(db->handle);
+<a name="l00244"></a>00244 free(db);
+<a name="l00245"></a>00245 <span class="keywordflow">return</span> NULL;
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00249"></a>00249 _slave_db_close(<span class="keyword">struct</span> slave_db *db)
+<a name="l00250"></a>00250 {
+<a name="l00251"></a>00251 <span class="keywordflow">if</span> (db->transaction_begin)
+<a name="l00252"></a>00252 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 <span class="keywordflow">if</span> (db->transaction_commit)
+<a name="l00255"></a>00255 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (db->delete_file_info)
+<a name="l00258"></a>00258 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 <span class="keywordflow">if</span> (db->update_file_info)
+<a name="l00261"></a>00261 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <span class="keywordflow">if</span> (sqlite3_close(db->handle) != SQLITE_OK) {
+<a name="l00264"></a>00264 fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (slave): %s\n"</span>,
+<a name="l00265"></a>00265 sqlite3_errmsg(db->handle));
+<a name="l00266"></a>00266 <span class="keywordflow">return</span> -1;
+<a name="l00267"></a>00267 }
+<a name="l00268"></a>00268 free(db);
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="keywordflow">return</span> 0;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00274"></a>00274 _single_process_db_compile_all_stmts(<span class="keyword">struct</span> single_process_db *db)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276 sqlite3 *handle;
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 handle = db->handle;
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 db->get_files = <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(handle);
+<a name="l00281"></a>00281 <span class="keywordflow">if</span> (!db->get_files)
+<a name="l00282"></a>00282 <span class="keywordflow">return</span> -1;
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 db->transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00285"></a>00285 <span class="keywordflow">if</span> (!db->transaction_begin)
+<a name="l00286"></a>00286 <span class="keywordflow">return</span> -2;
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 db->transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00289"></a>00289 <span class="keywordflow">if</span> (!db->transaction_commit)
+<a name="l00290"></a>00290 <span class="keywordflow">return</span> -3;
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 db->delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00293"></a>00293 <span class="keywordflow">if</span> (!db->delete_file_info)
+<a name="l00294"></a>00294 <span class="keywordflow">return</span> -4;
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 db->update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (!db->update_file_info)
+<a name="l00298"></a>00298 <span class="keywordflow">return</span> -5;
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="keywordflow">return</span> 0;
+<a name="l00301"></a>00301 }
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keyword">static</span> <span class="keyword">struct </span>single_process_db *
+<a name="l00304"></a>00304 _single_process_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 <span class="keyword">struct </span>single_process_db *db;
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308 db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00309"></a>00309 <span class="keywordflow">if</span> (!db) {
+<a name="l00310"></a>00310 perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00311"></a>00311 <span class="keywordflow">return</span> NULL;
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313
+<a name="l00314"></a>00314 <span class="keywordflow">if</span> (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+<a name="l00315"></a>00315 fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00316"></a>00316 db_path, sqlite3_errmsg(db->handle));
+<a name="l00317"></a>00317 <span class="keywordflow">goto</span> error;
<a name="l00318"></a>00318 }
<a name="l00319"></a>00319
-<a name="l00320"></a>00320 free(parser_match);
-<a name="l00321"></a>00321 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> r;
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00327"></a>00327 _slave_work(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds)
-<a name="l00328"></a>00328 {
-<a name="l00329"></a>00329 <span class="keyword">struct </span>slave_db *db;
-<a name="l00330"></a>00330 <span class="keywordtype">int</span> r;
+<a name="l00320"></a>00320 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db->handle) != 0) {
+<a name="l00321"></a>00321 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00322"></a>00322 <span class="keywordflow">goto</span> error;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324
+<a name="l00325"></a>00325 <span class="keywordflow">if</span> (_single_process_db_compile_all_stmts(db) != 0) {
+<a name="l00326"></a>00326 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00327"></a>00327 <span class="keywordflow">goto</span> error;
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329
+<a name="l00330"></a>00330 <span class="keywordflow">return</span> db;
<a name="l00331"></a>00331
-<a name="l00332"></a>00332 db = _slave_db_open(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
-<a name="l00333"></a>00333 <span class="keywordflow">if</span> (!db)
-<a name="l00334"></a>00334 <span class="keywordflow">return</span> -1;
-<a name="l00335"></a>00335
-<a name="l00336"></a>00336 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db->handle) != 0) {
-<a name="l00337"></a>00337 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
-<a name="l00338"></a>00338 r = -2;
-<a name="l00339"></a>00339 <span class="keywordflow">goto</span> end;
-<a name="l00340"></a>00340 }
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="keywordflow">if</span> (_slave_db_compile_all_stmts(db) != 0) {
-<a name="l00343"></a>00343 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
-<a name="l00344"></a>00344 r = -3;
-<a name="l00345"></a>00345 <span class="keywordflow">goto</span> end;
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db->handle) != 0) {
-<a name="l00349"></a>00349 fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
-<a name="l00350"></a>00350 r = -4;
-<a name="l00351"></a>00351 <span class="keywordflow">goto</span> end;
-<a name="l00352"></a>00352 }
-<a name="l00353"></a>00353 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> < 1) {
-<a name="l00354"></a>00354 fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
-<a name="l00355"></a>00355 r = -5;
-<a name="l00356"></a>00356 <span class="keywordflow">goto</span> end;
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 r = _slave_work_int(lms, fds, db);
-<a name="l00360"></a>00360
-<a name="l00361"></a>00361 end:
-<a name="l00362"></a>00362 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
-<a name="l00363"></a>00363 _slave_db_close(db);
-<a name="l00364"></a>00364 _init_sync_send(fds);
+<a name="l00332"></a>00332 error:
+<a name="l00333"></a>00333 sqlite3_close(db->handle);
+<a name="l00334"></a>00334 free(db);
+<a name="l00335"></a>00335 <span class="keywordflow">return</span> NULL;
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00339"></a>00339 _single_process_db_close(<span class="keyword">struct</span> single_process_db *db)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 <span class="keywordflow">if</span> (db->get_files)
+<a name="l00342"></a>00342 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->get_files, <span class="stringliteral">"get_files"</span>);
+<a name="l00343"></a>00343
+<a name="l00344"></a>00344 <span class="keywordflow">if</span> (db->transaction_begin)
+<a name="l00345"></a>00345 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00346"></a>00346
+<a name="l00347"></a>00347 <span class="keywordflow">if</span> (db->transaction_commit)
+<a name="l00348"></a>00348 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00349"></a>00349
+<a name="l00350"></a>00350 <span class="keywordflow">if</span> (db->delete_file_info)
+<a name="l00351"></a>00351 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 <span class="keywordflow">if</span> (db->update_file_info)
+<a name="l00354"></a>00354 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00355"></a>00355
+<a name="l00356"></a>00356 <span class="keywordflow">if</span> (sqlite3_close(db->handle) != SQLITE_OK) {
+<a name="l00357"></a>00357 fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (slave): %s\n"</span>,
+<a name="l00358"></a>00358 sqlite3_errmsg(db->handle));
+<a name="l00359"></a>00359 <span class="keywordflow">return</span> -1;
+<a name="l00360"></a>00360 }
+<a name="l00361"></a>00361 free(db);
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364 }
<a name="l00365"></a>00365
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> r;
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00369"></a>00369
-<a name="l00370"></a>00370 <span class="comment">/***********************************************************************</span>
-<a name="l00371"></a>00371 <span class="comment"> * Master-side.</span>
-<a name="l00372"></a>00372 <span class="comment"> ***********************************************************************/</span>
-<a name="l00373"></a>00373
-<a name="l00374"></a>00374 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00375"></a>00375 _master_db_compile_all_stmts(<span class="keyword">struct</span> master_db *db)
-<a name="l00376"></a>00376 {
-<a name="l00377"></a>00377 sqlite3 *handle;
-<a name="l00378"></a>00378
-<a name="l00379"></a>00379 handle = db->handle;
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381 db->get_files = <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(handle);
-<a name="l00382"></a>00382 <span class="keywordflow">if</span> (!db->get_files)
-<a name="l00383"></a>00383 <span class="keywordflow">return</span> -1;
-<a name="l00384"></a>00384
-<a name="l00385"></a>00385 <span class="keywordflow">return</span> 0;
-<a name="l00386"></a>00386 }
+<a name="l00366"></a>00366 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00367"></a>00367 _init_sync_send(<span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
+<a name="l00368"></a>00368 {
+<a name="l00369"></a>00369 <span class="keywordflow">return</span> _slave_send_reply(fds, 0);
+<a name="l00370"></a>00370 }
+<a name="l00371"></a>00371
+<a name="l00372"></a>00372 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00373"></a>00373 _slave_work_int(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>, <span class="keyword">struct</span> slave_db *db)
+<a name="l00374"></a>00374 {
+<a name="l00375"></a>00375 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00376"></a>00376 <span class="keywordtype">void</span> **parser_match;
+<a name="l00377"></a>00377 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> counter, flags;
+<a name="l00378"></a>00378 <span class="keywordtype">int</span> r;
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 parser_match = malloc(lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00381"></a>00381 <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00382"></a>00382 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> -6;
+<a name="l00384"></a>00384 }
+<a name="l00385"></a>00385
+<a name="l00386"></a>00386 _init_sync_send(fds);
<a name="l00387"></a>00387
-<a name="l00388"></a>00388 <span class="keyword">static</span> <span class="keyword">struct </span>master_db *
-<a name="l00389"></a>00389 _master_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
-<a name="l00390"></a>00390 {
-<a name="l00391"></a>00391 <span class="keyword">struct </span>master_db *db;
-<a name="l00392"></a>00392
-<a name="l00393"></a>00393 db = calloc(1, <span class="keyword">sizeof</span>(*db));
-<a name="l00394"></a>00394 <span class="keywordflow">if</span> (!db) {
-<a name="l00395"></a>00395 perror(<span class="stringliteral">"calloc"</span>);
-<a name="l00396"></a>00396 <span class="keywordflow">return</span> NULL;
-<a name="l00397"></a>00397 }
+<a name="l00388"></a>00388 counter = 0;
+<a name="l00389"></a>00389 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00390"></a>00390
+<a name="l00391"></a>00391 <span class="keywordflow">while</span> (((r = _slave_recv_file(fds, &finfo, &flags)) == 0) &&
+<a name="l00392"></a>00392 finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> > 0) {
+<a name="l00393"></a>00393 r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db->update_file_info, &finfo);
+<a name="l00394"></a>00394 <span class="keywordflow">if</span> (r < 0)
+<a name="l00395"></a>00395 fprintf(stderr, <span class="stringliteral">"ERROR: could not update path in DB\n"</span>);
+<a name="l00396"></a>00396 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags & <a class="code" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">COMM_FINFO_FLAG_OUTDATED</a>) {
+<a name="l00397"></a>00397 <span class="keywordtype">int</span> used;
<a name="l00398"></a>00398
-<a name="l00399"></a>00399 <span class="keywordflow">if</span> (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
-<a name="l00400"></a>00400 fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
-<a name="l00401"></a>00401 db_path, sqlite3_errmsg(db->handle));
-<a name="l00402"></a>00402 <span class="keywordflow">goto</span> error;
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db->handle) != 0) {
-<a name="l00406"></a>00406 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
-<a name="l00407"></a>00407 <span class="keywordflow">goto</span> error;
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 <span class="keywordflow">if</span> (_master_db_compile_all_stmts(db) != 0) {
-<a name="l00411"></a>00411 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
-<a name="l00412"></a>00412 <span class="keywordflow">goto</span> error;
-<a name="l00413"></a>00413 }
-<a name="l00414"></a>00414
-<a name="l00415"></a>00415 <span class="keywordflow">return</span> db;
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417 error:
-<a name="l00418"></a>00418 sqlite3_close(db->handle);
-<a name="l00419"></a>00419 free(db);
-<a name="l00420"></a>00420 <span class="keywordflow">return</span> NULL;
-<a name="l00421"></a>00421 }
-<a name="l00422"></a>00422
-<a name="l00423"></a>00423 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00424"></a>00424 _master_db_close(<span class="keyword">struct</span> master_db *db)
-<a name="l00425"></a>00425 {
-<a name="l00426"></a>00426 <span class="keywordflow">if</span> (db->get_files)
-<a name="l00427"></a>00427 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->get_files, <span class="stringliteral">"get_files"</span>);
-<a name="l00428"></a>00428
-<a name="l00429"></a>00429 <span class="keywordflow">if</span> (sqlite3_close(db->handle) != SQLITE_OK) {
-<a name="l00430"></a>00430 fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (master): %s\n"</span>,
-<a name="l00431"></a>00431 sqlite3_errmsg(db->handle));
-<a name="l00432"></a>00432 <span class="keywordflow">return</span> -1;
-<a name="l00433"></a>00433 }
-<a name="l00434"></a>00434 free(db);
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <span class="keywordflow">return</span> 0;
-<a name="l00437"></a>00437 }
-<a name="l00438"></a>00438
-<a name="l00439"></a>00439 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00440"></a>00440 _calc_base(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00441"></a>00441 {
-<a name="l00442"></a>00442 <span class="keywordtype">int</span> i;
-<a name="l00443"></a>00443
-<a name="l00444"></a>00444 <span class="keywordflow">for</span> (i = finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> - 1; i >= 0; i--)
-<a name="l00445"></a>00445 <span class="keywordflow">if</span> (finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>[i] == <span class="charliteral">'/'</span>) {
-<a name="l00446"></a>00446 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = i;
-<a name="l00447"></a>00447 <span class="keywordflow">return</span>;
-<a name="l00448"></a>00448 }
-<a name="l00449"></a>00449 }
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
-<a name="l00452"></a>00452 _update_finfo_from_stmt(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, sqlite3_stmt *stmt)
-<a name="l00453"></a>00453 {
-<a name="l00454"></a>00454 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
-<a name="l00455"></a>00455 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = sqlite3_column_blob(stmt, 1);
-<a name="l00456"></a>00456 finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = sqlite3_column_bytes(stmt, 1);
-<a name="l00457"></a>00457 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = 0;
-<a name="l00458"></a>00458 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 2);
-<a name="l00459"></a>00459 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 3);
-<a name="l00460"></a>00460 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 4);
-<a name="l00461"></a>00461 }
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
-<a name="l00464"></a>00464 _update_finfo_from_stat(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keyword">const</span> <span class="keyword">struct</span> stat *st)
-<a name="l00465"></a>00465 {
-<a name="l00466"></a>00466 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st->st_mtime;
-<a name="l00467"></a>00467 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st->st_size;
-<a name="l00468"></a>00468 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
-<a name="l00469"></a>00469 }
+<a name="l00399"></a>00399 used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &finfo);
+<a name="l00400"></a>00400 <span class="keywordflow">if</span> (!used)
+<a name="l00401"></a>00401 r = 0;
+<a name="l00402"></a>00402 <span class="keywordflow">else</span> {
+<a name="l00403"></a>00403 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db->handle, parser_match, &finfo);
+<a name="l00404"></a>00404 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00405"></a>00405 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00406"></a>00406 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00407"></a>00407 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db->delete_file_info, &finfo);
+<a name="l00408"></a>00408 }
+<a name="l00409"></a>00409 }
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 _slave_send_reply(fds, r);
+<a name="l00413"></a>00413 counter++;
+<a name="l00414"></a>00414 <span class="keywordflow">if</span> (counter > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00415"></a>00415 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00416"></a>00416 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00417"></a>00417 counter = 0;
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419 }
+<a name="l00420"></a>00420
+<a name="l00421"></a>00421 free(parser_match);
+<a name="l00422"></a>00422 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00423"></a>00423
+<a name="l00424"></a>00424 <span class="keywordflow">return</span> r;
+<a name="l00425"></a>00425 }
+<a name="l00426"></a>00426
+<a name="l00427"></a>00427 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00428"></a>00428 _slave_work(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds)
+<a name="l00429"></a>00429 {
+<a name="l00430"></a>00430 <span class="keyword">struct </span>slave_db *db;
+<a name="l00431"></a>00431 <span class="keywordtype">int</span> r;
+<a name="l00432"></a>00432
+<a name="l00433"></a>00433 db = _slave_db_open(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00434"></a>00434 <span class="keywordflow">if</span> (!db)
+<a name="l00435"></a>00435 <span class="keywordflow">return</span> -1;
+<a name="l00436"></a>00436
+<a name="l00437"></a>00437 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db->handle) != 0) {
+<a name="l00438"></a>00438 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00439"></a>00439 r = -2;
+<a name="l00440"></a>00440 <span class="keywordflow">goto</span> end;
+<a name="l00441"></a>00441 }
+<a name="l00442"></a>00442
+<a name="l00443"></a>00443 <span class="keywordflow">if</span> (_slave_db_compile_all_stmts(db) != 0) {
+<a name="l00444"></a>00444 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00445"></a>00445 r = -3;
+<a name="l00446"></a>00446 <span class="keywordflow">goto</span> end;
+<a name="l00447"></a>00447 }
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db->handle) != 0) {
+<a name="l00450"></a>00450 fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00451"></a>00451 r = -4;
+<a name="l00452"></a>00452 <span class="keywordflow">goto</span> end;
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> < 1) {
+<a name="l00455"></a>00455 fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00456"></a>00456 r = -5;
+<a name="l00457"></a>00457 <span class="keywordflow">goto</span> end;
+<a name="l00458"></a>00458 }
+<a name="l00459"></a>00459
+<a name="l00460"></a>00460 r = _slave_work_int(lms, fds, db);
+<a name="l00461"></a>00461
+<a name="l00462"></a>00462 end:
+<a name="l00463"></a>00463 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
+<a name="l00464"></a>00464 _slave_db_close(db);
+<a name="l00465"></a>00465 _init_sync_send(fds);
+<a name="l00466"></a>00466
+<a name="l00467"></a>00467 <span class="keywordflow">return</span> r;
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469
<a name="l00470"></a>00470
-<a name="l00471"></a>00471 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00472"></a>00472 _check_row(<span class="keyword">struct</span> master_db *db, <span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
-<a name="l00475"></a>00475 <span class="keyword">struct </span>stat st;
-<a name="l00476"></a>00476 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
-<a name="l00477"></a>00477 <span class="keywordtype">int</span> r, reply;
-<a name="l00478"></a>00478
-<a name="l00479"></a>00479 _update_finfo_from_stmt(&finfo, db->get_files);
-<a name="l00480"></a>00480
-<a name="l00481"></a>00481 flags = 0;
-<a name="l00482"></a>00482 <span class="keywordflow">if</span> (stat(finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, &st) == 0) {
-<a name="l00483"></a>00483 <span class="keywordflow">if</span> (st.st_mtime == finfo.<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> && st.st_size == finfo.<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>) {
-<a name="l00484"></a>00484 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> == 0)
-<a name="l00485"></a>00485 <span class="keywordflow">return</span> 0;
-<a name="l00486"></a>00486 <span class="keywordflow">else</span>
-<a name="l00487"></a>00487 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
-<a name="l00488"></a>00488 } <span class="keywordflow">else</span> {
-<a name="l00489"></a>00489 _update_finfo_from_stat(&finfo, &st);
-<a name="l00490"></a>00490 flags |= COMM_FINFO_FLAG_OUTDATED;
-<a name="l00491"></a>00491 }
-<a name="l00492"></a>00492 } <span class="keywordflow">else</span> {
-<a name="l00493"></a>00493 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
-<a name="l00494"></a>00494 <span class="keywordflow">return</span> 0;
-<a name="l00495"></a>00495 <span class="keywordflow">else</span>
-<a name="l00496"></a>00496 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = time(NULL);
-<a name="l00497"></a>00497 }
-<a name="l00498"></a>00498
-<a name="l00499"></a>00499 _calc_base(&finfo);
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 <span class="keywordflow">if</span> (_master_send_file(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, finfo, flags) != 0)
-<a name="l00502"></a>00502 <span class="keywordflow">return</span> -1;
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
-<a name="l00505"></a>00505 pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
-<a name="l00506"></a>00506 <span class="keywordflow">if</span> (r < 0)
-<a name="l00507"></a>00507 <span class="keywordflow">return</span> -2;
-<a name="l00508"></a>00508 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
-<a name="l00509"></a>00509 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
-<a name="l00510"></a>00510 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
-<a name="l00511"></a>00511 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
-<a name="l00512"></a>00512 <span class="keywordflow">return</span> -3;
-<a name="l00513"></a>00513 <span class="keywordflow">return</span> 1;
-<a name="l00514"></a>00514 } <span class="keywordflow">else</span> {
-<a name="l00515"></a>00515 <span class="keywordflow">if</span> (reply < 0) {
-<a name="l00516"></a>00516 <span class="comment">/* XXX callback library users to inform error. */</span>
-<a name="l00517"></a>00517 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
-<a name="l00518"></a>00518 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
-<a name="l00519"></a>00519 <span class="keywordflow">return</span> (-reply) << 8;
-<a name="l00520"></a>00520 } <span class="keywordflow">else</span>
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> reply;
-<a name="l00522"></a>00522 }
-<a name="l00523"></a>00523 }
-<a name="l00524"></a>00524
-<a name="l00525"></a>00525 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00526"></a>00526 _init_sync_wait(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> restart)
-<a name="l00527"></a>00527 {
-<a name="l00528"></a>00528 <span class="keywordtype">int</span> r, reply;
+<a name="l00471"></a>00471 <span class="comment">/***********************************************************************</span>
+<a name="l00472"></a>00472 <span class="comment"> * Master-side.</span>
+<a name="l00473"></a>00473 <span class="comment"> ***********************************************************************/</span>
+<a name="l00474"></a>00474
+<a name="l00475"></a>00475 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00476"></a>00476 _master_db_compile_all_stmts(<span class="keyword">struct</span> master_db *db)
+<a name="l00477"></a>00477 {
+<a name="l00478"></a>00478 sqlite3 *handle;
+<a name="l00479"></a>00479
+<a name="l00480"></a>00480 handle = db->handle;
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 db->get_files = <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(handle);
+<a name="l00483"></a>00483 <span class="keywordflow">if</span> (!db->get_files)
+<a name="l00484"></a>00484 <span class="keywordflow">return</span> -1;
+<a name="l00485"></a>00485
+<a name="l00486"></a>00486 <span class="keywordflow">return</span> 0;
+<a name="l00487"></a>00487 }
+<a name="l00488"></a>00488
+<a name="l00489"></a>00489 <span class="keyword">static</span> <span class="keyword">struct </span>master_db *
+<a name="l00490"></a>00490 _master_db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00491"></a>00491 {
+<a name="l00492"></a>00492 <span class="keyword">struct </span>master_db *db;
+<a name="l00493"></a>00493
+<a name="l00494"></a>00494 db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00495"></a>00495 <span class="keywordflow">if</span> (!db) {
+<a name="l00496"></a>00496 perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00497"></a>00497 <span class="keywordflow">return</span> NULL;
+<a name="l00498"></a>00498 }
+<a name="l00499"></a>00499
+<a name="l00500"></a>00500 <span class="keywordflow">if</span> (sqlite3_open(db_path, &db->handle) != SQLITE_OK) {
+<a name="l00501"></a>00501 fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00502"></a>00502 db_path, sqlite3_errmsg(db->handle));
+<a name="l00503"></a>00503 <span class="keywordflow">goto</span> error;
+<a name="l00504"></a>00504 }
+<a name="l00505"></a>00505
+<a name="l00506"></a>00506 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db->handle) != 0) {
+<a name="l00507"></a>00507 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00508"></a>00508 <span class="keywordflow">goto</span> error;
+<a name="l00509"></a>00509 }
+<a name="l00510"></a>00510
+<a name="l00511"></a>00511 <span class="keywordflow">if</span> (_master_db_compile_all_stmts(db) != 0) {
+<a name="l00512"></a>00512 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00513"></a>00513 <span class="keywordflow">goto</span> error;
+<a name="l00514"></a>00514 }
+<a name="l00515"></a>00515
+<a name="l00516"></a>00516 <span class="keywordflow">return</span> db;
+<a name="l00517"></a>00517
+<a name="l00518"></a>00518 error:
+<a name="l00519"></a>00519 sqlite3_close(db->handle);
+<a name="l00520"></a>00520 free(db);
+<a name="l00521"></a>00521 <span class="keywordflow">return</span> NULL;
+<a name="l00522"></a>00522 }
+<a name="l00523"></a>00523
+<a name="l00524"></a>00524 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00525"></a>00525 _master_db_close(<span class="keyword">struct</span> master_db *db)
+<a name="l00526"></a>00526 {
+<a name="l00527"></a>00527 <span class="keywordflow">if</span> (db->get_files)
+<a name="l00528"></a>00528 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db->get_files, <span class="stringliteral">"get_files"</span>);
<a name="l00529"></a>00529
-<a name="l00530"></a>00530 <span class="keywordflow">do</span> {
-<a name="l00531"></a>00531 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
-<a name="l00532"></a>00532 pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
-<a name="l00533"></a>00533 <span class="keywordflow">if</span> (r < 0)
-<a name="l00534"></a>00534 <span class="keywordflow">return</span> -1;
-<a name="l00535"></a>00535 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1 && restart) {
-<a name="l00536"></a>00536 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
-<a name="l00537"></a>00537 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
-<a name="l00538"></a>00538 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
-<a name="l00539"></a>00539 <span class="keywordflow">return</span> -2;
-<a name="l00540"></a>00540 }
-<a name="l00541"></a>00541 } <span class="keywordflow">while</span> (r != 0 && restart);
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543 <span class="keywordflow">return</span> r;
-<a name="l00544"></a>00544 }
-<a name="l00545"></a>00545
-<a name="l00546"></a>00546 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00547"></a>00547 _master_dummy_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> fds *master)
-<a name="l00548"></a>00548 {
-<a name="l00549"></a>00549 <span class="keywordflow">return</span> 0;
+<a name="l00530"></a>00530 <span class="keywordflow">if</span> (sqlite3_close(db->handle) != SQLITE_OK) {
+<a name="l00531"></a>00531 fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB (master): %s\n"</span>,
+<a name="l00532"></a>00532 sqlite3_errmsg(db->handle));
+<a name="l00533"></a>00533 <span class="keywordflow">return</span> -1;
+<a name="l00534"></a>00534 }
+<a name="l00535"></a>00535 free(db);
+<a name="l00536"></a>00536
+<a name="l00537"></a>00537 <span class="keywordflow">return</span> 0;
+<a name="l00538"></a>00538 }
+<a name="l00539"></a>00539
+<a name="l00540"></a>00540 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00541"></a>00541 _calc_base(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00542"></a>00542 {
+<a name="l00543"></a>00543 <span class="keywordtype">int</span> i;
+<a name="l00544"></a>00544
+<a name="l00545"></a>00545 <span class="keywordflow">for</span> (i = finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> - 1; i >= 0; i--)
+<a name="l00546"></a>00546 <span class="keywordflow">if</span> (finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>[i] == <span class="charliteral">'/'</span>) {
+<a name="l00547"></a>00547 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = i;
+<a name="l00548"></a>00548 <span class="keywordflow">return</span>;
+<a name="l00549"></a>00549 }
<a name="l00550"></a>00550 }
<a name="l00551"></a>00551
-<a name="l00552"></a>00552 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00553"></a>00553 _check(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> *path)
+<a name="l00552"></a>00552 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00553"></a>00553 _update_finfo_from_stmt(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, sqlite3_stmt *stmt)
<a name="l00554"></a>00554 {
-<a name="l00555"></a>00555 <span class="keywordtype">char</span> query[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 2];
-<a name="l00556"></a>00556 <span class="keyword">struct </span>master_db *db;
-<a name="l00557"></a>00557 <span class="keywordtype">int</span> r, ret;
-<a name="l00558"></a>00558
-<a name="l00559"></a>00559 db = _master_db_open(pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
-<a name="l00560"></a>00560 <span class="keywordflow">if</span> (!db)
-<a name="l00561"></a>00561 <span class="keywordflow">return</span> -1;
-<a name="l00562"></a>00562
-<a name="l00563"></a>00563 memcpy(query, path, len);
-<a name="l00564"></a>00564 query[len] = <span class="charliteral">'%'</span>;
-<a name="l00565"></a>00565 query[len + 1] = <span class="charliteral">'\0'</span>;
-<a name="l00566"></a>00566 ret = <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(db->get_files, query, len + 1);
-<a name="l00567"></a>00567 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00568"></a>00568 <span class="keywordflow">goto</span> end;
-<a name="l00569"></a>00569
-<a name="l00570"></a>00570 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, _slave_work) != 0) {
-<a name="l00571"></a>00571 ret = -2;
-<a name="l00572"></a>00572 <span class="keywordflow">goto</span> end;
-<a name="l00573"></a>00573 }
-<a name="l00574"></a>00574 _init_sync_wait(pinfo, 1);
-<a name="l00575"></a>00575
-<a name="l00576"></a>00576 <span class="keywordflow">do</span> {
-<a name="l00577"></a>00577 r = sqlite3_step(db->get_files);
-<a name="l00578"></a>00578 <span class="keywordflow">if</span> (r == SQLITE_ROW) {
-<a name="l00579"></a>00579 <span class="keywordflow">if</span> (_check_row(db, pinfo) < 0) {
-<a name="l00580"></a>00580 fprintf(stderr, <span class="stringliteral">"ERROR: could not check row.\n"</span>);
-<a name="l00581"></a>00581 ret = -1;
-<a name="l00582"></a>00582 <span class="keywordflow">goto</span> finish_slave;
-<a name="l00583"></a>00583 }
-<a name="l00584"></a>00584 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00585"></a>00585 fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
-<a name="l00586"></a>00586 sqlite3_errmsg(db->handle));
-<a name="l00587"></a>00587 ret = -2;
-<a name="l00588"></a>00588 <span class="keywordflow">goto</span> finish_slave;
-<a name="l00589"></a>00589 }
-<a name="l00590"></a>00590 } <span class="keywordflow">while</span> (r != SQLITE_DONE);
-<a name="l00591"></a>00591 ret = 0;
+<a name="l00555"></a>00555 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00556"></a>00556 finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = sqlite3_column_blob(stmt, 1);
+<a name="l00557"></a>00557 finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = sqlite3_column_bytes(stmt, 1);
+<a name="l00558"></a>00558 finfo-><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = 0;
+<a name="l00559"></a>00559 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00560"></a>00560 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 3);
+<a name="l00561"></a>00561 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 4);
+<a name="l00562"></a>00562 }
+<a name="l00563"></a>00563
+<a name="l00564"></a>00564 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00565"></a>00565 _update_finfo_from_stat(<span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keyword">const</span> <span class="keyword">struct</span> stat *st)
+<a name="l00566"></a>00566 {
+<a name="l00567"></a>00567 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st->st_mtime;
+<a name="l00568"></a>00568 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st->st_size;
+<a name="l00569"></a>00569 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00570"></a>00570 }
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00573"></a>00573 _report_progress(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status)
+<a name="l00574"></a>00574 {
+<a name="l00575"></a>00575 <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb;
+<a name="l00576"></a>00576 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578 cb = lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00579"></a>00579 <span class="keywordflow">if</span> (!cb)
+<a name="l00580"></a>00580 <span class="keywordflow">return</span>;
+<a name="l00581"></a>00581
+<a name="l00582"></a>00582 cb(lms, finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>, status, lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00583"></a>00583 }
+<a name="l00584"></a>00584
+<a name="l00585"></a>00585 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00586"></a>00586 _finfo_update(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *flags)
+<a name="l00587"></a>00587 {
+<a name="l00588"></a>00588 <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00589"></a>00589 <span class="keyword">struct </span>stat st;
+<a name="l00590"></a>00590
+<a name="l00591"></a>00591 _update_finfo_from_stmt(finfo, db->get_files);
<a name="l00592"></a>00592
-<a name="l00593"></a>00593 finish_slave:
-<a name="l00594"></a>00594 _master_send_finish(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
-<a name="l00595"></a>00595 _init_sync_wait(pinfo, 0);
-<a name="l00596"></a>00596 <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(pinfo, _master_dummy_send_finish);
-<a name="l00597"></a>00597
-<a name="l00598"></a>00598 end:
-<a name="l00599"></a>00599 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(db->get_files);
-<a name="l00600"></a>00600 _master_db_close(db);
-<a name="l00601"></a>00601
-<a name="l00602"></a>00602 <span class="keywordflow">return</span> ret;
-<a name="l00603"></a>00603 }
-<a name="l00604"></a>00604
-<a name="l00617"></a>00617 <span class="keywordtype">int</span>
-<a name="l00618"></a><a class="code" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">00618</a> <a class="code" href="lightmediascanner_8h.html#890f1af4c54c88a63abdbeff5ecd49a3">lms_check</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l00593"></a>00593 *flags = 0;
+<a name="l00594"></a>00594 <span class="keywordflow">if</span> (stat(finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, &st) == 0) {
+<a name="l00595"></a>00595 <span class="keywordflow">if</span> (st.st_mtime == finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> && st.st_size == finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>) {
+<a name="l00596"></a>00596 <span class="keywordflow">if</span> (finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> == 0) {
+<a name="l00597"></a>00597 _report_progress(info, finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370204315e58ce4b7dfa6421b4d1556655d">LMS_PROGRESS_STATUS_UP_TO_DATE</a>);
+<a name="l00598"></a>00598 <span class="keywordflow">return</span> 0;
+<a name="l00599"></a>00599 } <span class="keywordflow">else</span>
+<a name="l00600"></a>00600 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00601"></a>00601 } <span class="keywordflow">else</span> {
+<a name="l00602"></a>00602 _update_finfo_from_stat(finfo, &st);
+<a name="l00603"></a>00603 *flags |= COMM_FINFO_FLAG_OUTDATED;
+<a name="l00604"></a>00604 }
+<a name="l00605"></a>00605 } <span class="keywordflow">else</span> {
+<a name="l00606"></a>00606 <span class="keywordflow">if</span> (finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00607"></a>00607 <span class="keywordflow">return</span> 0;
+<a name="l00608"></a>00608 <span class="keywordflow">else</span>
+<a name="l00609"></a>00609 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = time(NULL);
+<a name="l00610"></a>00610 }
+<a name="l00611"></a>00611
+<a name="l00612"></a>00612 _calc_base(finfo);
+<a name="l00613"></a>00613
+<a name="l00614"></a>00614 <span class="keywordflow">return</span> 1;
+<a name="l00615"></a>00615 }
+<a name="l00616"></a>00616
+<a name="l00617"></a>00617 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00618"></a>00618 _check_row(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info)
<a name="l00619"></a>00619 {
-<a name="l00620"></a>00620 <span class="keyword">struct </span>pinfo pinfo;
-<a name="l00621"></a>00621 <span class="keywordtype">int</span> r;
-<a name="l00622"></a>00622 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
-<a name="l00623"></a>00623
-<a name="l00624"></a>00624 <span class="keywordflow">if</span> (!<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>) {
-<a name="l00625"></a>00625 r = -1;
-<a name="l00626"></a>00626 <span class="keywordflow">goto</span> end;
-<a name="l00627"></a>00627 }
-<a name="l00628"></a>00628
-<a name="l00629"></a>00629 <span class="keywordflow">if</span> (!top_path) {
-<a name="l00630"></a>00630 r = -2;
-<a name="l00631"></a>00631 <span class="keywordflow">goto</span> end;
-<a name="l00632"></a>00632 }
-<a name="l00633"></a>00633
-<a name="l00634"></a>00634 <span class="keywordflow">if</span> (<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
-<a name="l00635"></a>00635 fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
-<a name="l00636"></a>00636 r = -3;
-<a name="l00637"></a>00637 <span class="keywordflow">goto</span> end;
-<a name="l00638"></a>00638 }
-<a name="l00639"></a>00639
-<a name="l00640"></a>00640 <span class="keywordflow">if</span> (!<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
-<a name="l00641"></a>00641 fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
-<a name="l00642"></a>00642 r = -4;
-<a name="l00643"></a>00643 <span class="keywordflow">goto</span> end;
-<a name="l00644"></a>00644 }
-<a name="l00645"></a>00645
-<a name="l00646"></a>00646 pinfo.<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a> = <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>;
-<a name="l00647"></a>00647
-<a name="l00648"></a>00648 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&pinfo) != 0) {
-<a name="l00649"></a>00649 r = -5;
-<a name="l00650"></a>00650 <span class="keywordflow">goto</span> end;
-<a name="l00651"></a>00651 }
-<a name="l00652"></a>00652
-<a name="l00653"></a>00653 <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
-<a name="l00654"></a>00654 perror(<span class="stringliteral">"realpath"</span>);
-<a name="l00655"></a>00655 r = -6;
-<a name="l00656"></a>00656 <span class="keywordflow">goto</span> close_pipes;
-<a name="l00657"></a>00657 }
-<a name="l00658"></a>00658
-<a name="l00659"></a>00659 <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
-<a name="l00660"></a>00660 r = _check(&pinfo, strlen(path), path);
-<a name="l00661"></a>00661 <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
-<a name="l00662"></a>00662
-<a name="l00663"></a>00663 close_pipes:
-<a name="l00664"></a>00664 <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&pinfo);
-<a name="l00665"></a>00665 end:
-<a name="l00666"></a>00666 <span class="keywordflow">return</span> r;
-<a name="l00667"></a>00667 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00620"></a>00620 <span class="keyword">struct </span><a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a> = (<span class="keyword">struct </span>pinfo *)info;
+<a name="l00621"></a>00621 <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00622"></a>00622 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00623"></a>00623 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00624"></a>00624 <span class="keywordtype">int</span> r, reply;
+<a name="l00625"></a>00625
+<a name="l00626"></a>00626 r = _finfo_update(db, info, &finfo, &flags);
+<a name="l00627"></a>00627 <span class="keywordflow">if</span> (r == 0)
+<a name="l00628"></a>00628 <span class="keywordflow">return</span> r;
+<a name="l00629"></a>00629
+<a name="l00630"></a>00630 <span class="keywordflow">if</span> (_master_send_file(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, finfo, flags) != 0)
+<a name="l00631"></a>00631 <span class="keywordflow">return</span> -1;
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
+<a name="l00634"></a>00634 pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00635"></a>00635 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00636"></a>00636 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>);
+<a name="l00637"></a>00637 <span class="keywordflow">return</span> -2;
+<a name="l00638"></a>00638 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00639"></a>00639 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00640"></a>00640 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00641"></a>00641 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>);
+<a name="l00642"></a>00642 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00643"></a>00643 <span class="keywordflow">return</span> -3;
+<a name="l00644"></a>00644 <span class="keywordflow">return</span> 1;
+<a name="l00645"></a>00645 } <span class="keywordflow">else</span> {
+<a name="l00646"></a>00646 <span class="keywordflow">if</span> (reply < 0) {
+<a name="l00647"></a>00647 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00648"></a>00648 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00649"></a>00649 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00650"></a>00650 <span class="keywordflow">return</span> (-reply) << 8;
+<a name="l00651"></a>00651 } <span class="keywordflow">else</span> {
+<a name="l00652"></a>00652 <span class="keywordflow">if</span> (!finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00653"></a>00653 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00654"></a>00654 <span class="keywordflow">else</span>
+<a name="l00655"></a>00655 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>);
+<a name="l00656"></a>00656 <span class="keywordflow">return</span> reply;
+<a name="l00657"></a>00657 }
+<a name="l00658"></a>00658 }
+<a name="l00659"></a>00659 }
+<a name="l00660"></a>00660
+<a name="l00661"></a>00661 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00662"></a>00662 _check_row_single_process(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info)
+<a name="l00663"></a>00663 {
+<a name="l00664"></a>00664 <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> *<a class="code" href="structsinfo.html">sinfo</a> = (<span class="keyword">struct </span>sinfo *)info;
+<a name="l00665"></a>00665 <span class="keyword">struct </span>single_process_db *db = db_ptr;
+<a name="l00666"></a>00666 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00667"></a>00667 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;
+<a name="l00668"></a>00668 <span class="keywordtype">int</span> r;
+<a name="l00669"></a>00669
+<a name="l00670"></a>00670 <span class="keywordtype">void</span> **parser_match = sinfo-><a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00671"></a>00671 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00672"></a>00672
+<a name="l00673"></a>00673 r = _finfo_update(db, info, &finfo, &flags);
+<a name="l00674"></a>00674 <span class="keywordflow">if</span> (r == 0)
+<a name="l00675"></a>00675 <span class="keywordflow">return</span> r;
+<a name="l00676"></a>00676
+<a name="l00677"></a>00677 r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db->update_file_info, &finfo);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (r < 0)
+<a name="l00679"></a>00679 fprintf(stderr, <span class="stringliteral">"ERROR: could not update path in DB\n"</span>);
+<a name="l00680"></a>00680 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags & COMM_FINFO_FLAG_OUTDATED) {
+<a name="l00681"></a>00681 <span class="keywordtype">int</span> used;
+<a name="l00682"></a>00682
+<a name="l00683"></a>00683 used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &finfo);
+<a name="l00684"></a>00684 <span class="keywordflow">if</span> (!used)
+<a name="l00685"></a>00685 r = 0;
+<a name="l00686"></a>00686 <span class="keywordflow">else</span> {
+<a name="l00687"></a>00687 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db->handle, parser_match, &finfo);
+<a name="l00688"></a>00688 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00689"></a>00689 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00690"></a>00690 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00691"></a>00691 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db->delete_file_info, &finfo);
+<a name="l00692"></a>00692 }
+<a name="l00693"></a>00693 }
+<a name="l00694"></a>00694 }
+<a name="l00695"></a>00695
+<a name="l00696"></a>00696 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00697"></a>00697 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00698"></a>00698 <span class="keywordflow">return</span> (-r) << 8;
+<a name="l00699"></a>00699 } <span class="keywordflow">else</span> {
+<a name="l00700"></a>00700 sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>++;
+<a name="l00701"></a>00701 <span class="keywordflow">if</span> (sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00702"></a>00702 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00703"></a>00703 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00704"></a>00704 sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00705"></a>00705 }
+<a name="l00706"></a>00706
+<a name="l00707"></a>00707 <span class="keywordflow">if</span> (!finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>)
+<a name="l00708"></a>00708 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00709"></a>00709 <span class="keywordflow">else</span>
+<a name="l00710"></a>00710 _report_progress(info, &finfo, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370a6792f0bca81010621d898e105face11">LMS_PROGRESS_STATUS_DELETED</a>);
+<a name="l00711"></a>00711 <span class="keywordflow">return</span> r;
+<a name="l00712"></a>00712 }
+<a name="l00713"></a>00713 }
+<a name="l00714"></a>00714
+<a name="l00715"></a>00715 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00716"></a>00716 _init_sync_wait(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> restart)
+<a name="l00717"></a>00717 {
+<a name="l00718"></a>00718 <span class="keywordtype">int</span> r, reply;
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="keywordflow">do</span> {
+<a name="l00721"></a>00721 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
+<a name="l00722"></a>00722 pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00723"></a>00723 <span class="keywordflow">if</span> (r < 0)
+<a name="l00724"></a>00724 <span class="keywordflow">return</span> -1;
+<a name="l00725"></a>00725 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1 && restart) {
+<a name="l00726"></a>00726 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00727"></a>00727 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00728"></a>00728 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00729"></a>00729 <span class="keywordflow">return</span> -2;
+<a name="l00730"></a>00730 }
+<a name="l00731"></a>00731 } <span class="keywordflow">while</span> (r != 0 && restart);
+<a name="l00732"></a>00732
+<a name="l00733"></a>00733 <span class="keywordflow">return</span> r;
+<a name="l00734"></a>00734 }
+<a name="l00735"></a>00735
+<a name="l00736"></a>00736 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00737"></a>00737 _master_dummy_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> fds *master)
+<a name="l00738"></a>00738 {
+<a name="l00739"></a>00739 <span class="keywordflow">return</span> 0;
+<a name="l00740"></a>00740 }
+<a name="l00741"></a>00741
+<a name="l00742"></a>00742 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00743"></a>00743 _db_files_loop(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a> check_row)
+<a name="l00744"></a>00744 {
+<a name="l00745"></a>00745 <span class="keyword">struct </span>master_db *db = db_ptr;
+<a name="l00746"></a>00746 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00747"></a>00747 <span class="keywordtype">int</span> r;
+<a name="l00748"></a>00748
+<a name="l00749"></a>00749 <span class="keywordflow">do</span> {
+<a name="l00750"></a>00750 r = sqlite3_step(db->get_files);
+<a name="l00751"></a>00751 <span class="keywordflow">if</span> (r == SQLITE_ROW) {
+<a name="l00752"></a>00752 <span class="keywordflow">if</span> (check_row(db_ptr, info) < 0) {
+<a name="l00753"></a>00753 fprintf(stderr, <span class="stringliteral">"ERROR: could not check row.\n"</span>);
+<a name="l00754"></a>00754 <span class="keywordflow">return</span> -1;
+<a name="l00755"></a>00755 }
+<a name="l00756"></a>00756 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00757"></a>00757 fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
+<a name="l00758"></a>00758 sqlite3_errmsg(db->handle));
+<a name="l00759"></a>00759 <span class="keywordflow">return</span> -2;
+<a name="l00760"></a>00760 }
+<a name="l00761"></a>00761 } <span class="keywordflow">while</span> (r != SQLITE_DONE && !lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>);
+<a name="l00762"></a>00762
+<a name="l00763"></a>00763 <span class="keywordflow">return</span> 0;
+<a name="l00764"></a>00764 }
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00767"></a>00767 _check(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> *path)
+<a name="l00768"></a>00768 {
+<a name="l00769"></a>00769 <span class="keywordtype">char</span> query[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 2];
+<a name="l00770"></a>00770 <span class="keyword">struct </span>master_db *db;
+<a name="l00771"></a>00771 <span class="keywordtype">int</span> ret;
+<a name="l00772"></a>00772
+<a name="l00773"></a>00773 db = _master_db_open(pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00774"></a>00774 <span class="keywordflow">if</span> (!db)
+<a name="l00775"></a>00775 <span class="keywordflow">return</span> -1;
+<a name="l00776"></a>00776
+<a name="l00777"></a>00777 memcpy(query, path, len);
+<a name="l00778"></a>00778 query[len] = <span class="charliteral">'%'</span>;
+<a name="l00779"></a>00779 query[len + 1] = <span class="charliteral">'\0'</span>;
+<a name="l00780"></a>00780 ret = <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(db->get_files, query, len + 1);
+<a name="l00781"></a>00781 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00782"></a>00782 <span class="keywordflow">goto</span> end;
+<a name="l00783"></a>00783
+<a name="l00784"></a>00784 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, _slave_work) != 0) {
+<a name="l00785"></a>00785 ret = -2;
+<a name="l00786"></a>00786 <span class="keywordflow">goto</span> end;
+<a name="l00787"></a>00787 }
+<a name="l00788"></a>00788
+<a name="l00789"></a>00789 _init_sync_wait(pinfo, 1);
+<a name="l00790"></a>00790
+<a name="l00791"></a>00791 ret = _db_files_loop(db, (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)pinfo, _check_row);
+<a name="l00792"></a>00792
+<a name="l00793"></a>00793 _master_send_finish(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00794"></a>00794 _init_sync_wait(pinfo, 0);
+<a name="l00795"></a>00795 <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(pinfo, _master_dummy_send_finish);
+<a name="l00796"></a>00796 end:
+<a name="l00797"></a>00797 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(db->get_files);
+<a name="l00798"></a>00798 _master_db_close(db);
+<a name="l00799"></a>00799
+<a name="l00800"></a>00800 <span class="keywordflow">return</span> ret;
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802
+<a name="l00803"></a>00803 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00804"></a>00804 _check_single_process(<span class="keyword">struct</span> sinfo *sinfo, <span class="keywordtype">int</span> len, <span class="keywordtype">char</span> *path)
+<a name="l00805"></a>00805 {
+<a name="l00806"></a>00806 <span class="keyword">struct </span>single_process_db *db;
+<a name="l00807"></a>00807 <span class="keywordtype">char</span> query[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> + 2];
+<a name="l00808"></a>00808 <span class="keywordtype">void</span> **parser_match;
+<a name="l00809"></a>00809 <a class="code" href="structlms.html">lms_t</a> *lms;
+<a name="l00810"></a>00810 <span class="keywordtype">int</span> ret;
+<a name="l00811"></a>00811
+<a name="l00812"></a>00812 lms = sinfo-><a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00813"></a>00813 db = _single_process_db_open(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00814"></a>00814 <span class="keywordflow">if</span> (!db)
+<a name="l00815"></a>00815 <span class="keywordflow">return</span> -1;
+<a name="l00816"></a>00816
+<a name="l00817"></a>00817 memcpy(query, path, len);
+<a name="l00818"></a>00818 query[len] = <span class="charliteral">'%'</span>;
+<a name="l00819"></a>00819 query[len + 1] = <span class="charliteral">'\0'</span>;
+<a name="l00820"></a>00820 ret = <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(db->get_files, query, len + 1);
+<a name="l00821"></a>00821 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00822"></a>00822 <span class="keywordflow">goto</span> end;
+<a name="l00823"></a>00823
+<a name="l00824"></a>00824 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db->handle) != 0) {
+<a name="l00825"></a>00825 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00826"></a>00826 ret = -2;
+<a name="l00827"></a>00827 <span class="keywordflow">goto</span> end;
+<a name="l00828"></a>00828 }
+<a name="l00829"></a>00829
+<a name="l00830"></a>00830 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db->handle) != 0) {
+<a name="l00831"></a>00831 fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00832"></a>00832 ret = -3;
+<a name="l00833"></a>00833 <span class="keywordflow">goto</span> end;
+<a name="l00834"></a>00834 }
+<a name="l00835"></a>00835
+<a name="l00836"></a>00836 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> < 1) {
+<a name="l00837"></a>00837 fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00838"></a>00838 ret = -4;
+<a name="l00839"></a>00839 <span class="keywordflow">goto</span> end;
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841
+<a name="l00842"></a>00842 parser_match = malloc(lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00843"></a>00843 <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00844"></a>00844 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00845"></a>00845 ret = -5;
+<a name="l00846"></a>00846 <span class="keywordflow">goto</span> end;
+<a name="l00847"></a>00847 }
+<a name="l00848"></a>00848
+<a name="l00849"></a>00849 sinfo-><a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a> = parser_match;
+<a name="l00850"></a>00850
+<a name="l00851"></a>00851 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00852"></a>00852
+<a name="l00853"></a>00853 ret = _db_files_loop(db, (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)sinfo, _check_row_single_process);
+<a name="l00854"></a>00854
+<a name="l00855"></a>00855 free(parser_match);
+<a name="l00856"></a>00856 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00857"></a>00857 end:
+<a name="l00858"></a>00858 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
+<a name="l00859"></a>00859 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(db->get_files);
+<a name="l00860"></a>00860 _single_process_db_close(db);
+<a name="l00861"></a>00861
+<a name="l00862"></a>00862 <span class="keywordflow">return</span> ret;
+<a name="l00863"></a>00863 }
+<a name="l00864"></a>00864
+<a name="l00865"></a>00865 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00866"></a>00866 _lms_check_check_valid(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)
+<a name="l00867"></a>00867 {
+<a name="l00868"></a>00868 <span class="keywordflow">if</span> (!lms)
+<a name="l00869"></a>00869 <span class="keywordflow">return</span> -1;
+<a name="l00870"></a>00870
+<a name="l00871"></a>00871 <span class="keywordflow">if</span> (!path)
+<a name="l00872"></a>00872 <span class="keywordflow">return</span> -2;
+<a name="l00873"></a>00873
+<a name="l00874"></a>00874 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00875"></a>00875 fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
+<a name="l00876"></a>00876 <span class="keywordflow">return</span> -3;
+<a name="l00877"></a>00877 }
+<a name="l00878"></a>00878
+<a name="l00879"></a>00879 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00880"></a>00880 fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
+<a name="l00881"></a>00881 <span class="keywordflow">return</span> -4;
+<a name="l00882"></a>00882 }
+<a name="l00883"></a>00883
+<a name="l00884"></a>00884 <span class="keywordflow">return</span> 0;
+<a name="l00885"></a>00885 }
+<a name="l00886"></a>00886
+<a name="l00899"></a>00899 <span class="keywordtype">int</span>
+<a name="l00900"></a><a class="code" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">00900</a> <a class="code" href="lightmediascanner_8h.html#5b70063cf19648de70bb145404aa3d0b">lms_check</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l00901"></a>00901 {
+<a name="l00902"></a>00902 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00903"></a>00903 <span class="keyword">struct </span>pinfo pinfo;
+<a name="l00904"></a>00904 <span class="keywordtype">int</span> r;
+<a name="l00905"></a>00905
+<a name="l00906"></a>00906 r = _lms_check_check_valid(lms, top_path);
+<a name="l00907"></a>00907 <span class="keywordflow">if</span> (r < 0)
+<a name="l00908"></a>00908 <span class="keywordflow">return</span> r;
+<a name="l00909"></a>00909
+<a name="l00910"></a>00910 pinfo.<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l00911"></a>00911
+<a name="l00912"></a>00912 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&pinfo) != 0) {
+<a name="l00913"></a>00913 r = -5;
+<a name="l00914"></a>00914 <span class="keywordflow">goto</span> end;
+<a name="l00915"></a>00915 }
+<a name="l00916"></a>00916
+<a name="l00917"></a>00917 <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00918"></a>00918 perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00919"></a>00919 r = -6;
+<a name="l00920"></a>00920 <span class="keywordflow">goto</span> close_pipes;
+<a name="l00921"></a>00921 }
+<a name="l00922"></a>00922
+<a name="l00923"></a>00923 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00924"></a>00924 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00925"></a>00925 r = _check(&pinfo, strlen(path), path);
+<a name="l00926"></a>00926 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00927"></a>00927 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00928"></a>00928
+<a name="l00929"></a>00929 close_pipes:
+<a name="l00930"></a>00930 <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&pinfo);
+<a name="l00931"></a>00931 end:
+<a name="l00932"></a>00932 <span class="keywordflow">return</span> r;
+<a name="l00933"></a>00933 }
+<a name="l00934"></a>00934
+<a name="l00948"></a>00948 <span class="keywordtype">int</span>
+<a name="l00949"></a><a class="code" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">00949</a> <a class="code" href="lightmediascanner_8h.html#bfd6888e606654c585e41aa946637432">lms_check_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l00950"></a>00950 {
+<a name="l00951"></a>00951 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00952"></a>00952 <span class="keyword">struct </span>sinfo sinfo;
+<a name="l00953"></a>00953 <span class="keywordtype">int</span> r;
+<a name="l00954"></a>00954
+<a name="l00955"></a>00955 r = _lms_check_check_valid(lms, top_path);
+<a name="l00956"></a>00956 <span class="keywordflow">if</span> (r < 0)
+<a name="l00957"></a>00957 <span class="keywordflow">return</span> r;
+<a name="l00958"></a>00958
+<a name="l00959"></a>00959 sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l00960"></a>00960 sinfo.<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00961"></a>00961
+<a name="l00962"></a>00962 <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00963"></a>00963 perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00964"></a>00964 <span class="keywordflow">return</span> -6;
+<a name="l00965"></a>00965 }
+<a name="l00966"></a>00966
+<a name="l00967"></a>00967 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00968"></a>00968 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00969"></a>00969 r = _check_single_process(&sinfo, strlen(path), path);
+<a name="l00970"></a>00970 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00971"></a>00971 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00972"></a>00972
+<a name="l00973"></a>00973 <span class="keywordflow">return</span> r;
+<a name="l00974"></a>00974 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_check.c File Reference</h1><code>#include <sys/wait.h></code><br>
<code>#include <sys/stat.h></code><br>
<code>#include <unistd.h></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<p>
-Include dependency graph for lightmediascanner_check.c:<p><center><img src="lightmediascanner__check_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_check.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_check.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__check_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_check.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_check.c_map">
-<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="757,512,885,539"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="267,639,440,665"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="257,816,449,843"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="500,765,668,792"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="719,639,924,665"></map>
+<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="869,239,1024,265"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="1004,84,1215,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="1313,84,1548,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="1261,161,1461,188"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="1048,239,1301,265"></map>
+</div>
<p>
<a href="lightmediascanner__check_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lms_check</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#a56ce530328493e110054aa1eabf66c2">lms_check_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_check.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f8084f435d209d810eb33deaa35fab5e"></a><!-- doxytag: member="lightmediascanner_check.c::COMM_FINFO_FLAG_OUTDATED" ref="f8084f435d209d810eb33deaa35fab5e" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00075">75</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00900">900</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00618">618</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00054">pinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00566">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png" border="0" usemap="#lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png" border="0" usemap="#lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph_map" alt=""></center>
<map name="lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph_map">
-<area shape="rect" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="136,5,245,32"><area shape="rect" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="135,56,247,83"></map>
+<area shape="rect" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="153,5,281,32"><area shape="rect" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="148,56,287,83"></map>
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="a56ce530328493e110054aa1eabf66c2"></a><!-- doxytag: member="lightmediascanner_check.c::lms_check_single_process" ref="a56ce530328493e110054aa1eabf66c2" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int lms_check_single_process </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"> <em>top_path</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check consistency of given directory *without fork()-ing* into child process.<p>
+This will update media in the given directory or its children. If files are missing, they'll be marked as deleted (dtime is set), if they were marked as deleted and are now present, they are unmarked (dtime is unset). Note that if a <a class="el" href="structparser.html">parser</a> hangs in the check process, this call will also hang.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em> </td><td>previously allocated Light Media Scanner instance. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>top_path</em> </td><td>top directory to scan.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__check_8c-source.html#l00949">949</a> of file <a class="el" href="lightmediascanner__check_8c-source.html">lightmediascanner_check.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">sinfo::commit_counter</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00064">sinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="136,5,245,32">
-<area shape="rect" href="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="135,56,247,83">
+<area shape="rect" href="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="153,5,281,32">
+<area shape="rect" href="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="148,56,287,83">
-c182c7304ee5dc5f9c382186673e0b3f
\ No newline at end of file
+f27645b7acc52a556ee12dc02a3fa3ac
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="757,512,885,539">
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="267,639,440,665">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="257,816,449,843">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="500,765,668,792">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="719,639,924,665">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="869,239,1024,265">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="1004,84,1215,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="1313,84,1548,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="1261,161,1461,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="1048,239,1301,265">
-6cd5c7de94121a998b8300cf1a0a053a
\ No newline at end of file
+1124d8add2c7ebf48f595d5ff4c2a1f3
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_db.h</h1><a href="lightmediascanner__db_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_DB_H_</span>
<a name="l00022"></a><a class="code" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_DB_H_ 1</span>
<a name="l00075"></a><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">00075</a> <span class="keyword">struct </span><a class="code" href="structlms__gps__info.html">lms_gps_info</a> <a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>;
<a name="l00076"></a>00076 };
<a name="l00077"></a>00077
-<a name="l00078"></a><a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">00078</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_image lms_db_image_t;
+<a name="l00078"></a><a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">00078</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_image <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>;
<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> lms_db_image_t *<a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00081"></a>00081 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(lms_db_image_t *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00082"></a>00082 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(lms_db_image_t *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00083"></a>00083 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(lms_db_image_t *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00080"></a>00080 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *<a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00081"></a>00081 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00082"></a>00082 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00083"></a>00083 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00084"></a>00084
<a name="l00085"></a>00085 <span class="comment">/* Audio Records */</span>
<a name="l00086"></a><a class="code" href="structlms__audio__info.html">00086</a> <span class="keyword">struct </span><a class="code" href="structlms__audio__info.html">lms_audio_info</a> {
<a name="l00094"></a><a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">00094</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a>;
<a name="l00095"></a>00095 };
<a name="l00096"></a>00096
-<a name="l00097"></a><a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">00097</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_audio lms_db_audio_t;
+<a name="l00097"></a><a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">00097</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_audio <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>;
<a name="l00098"></a>00098
-<a name="l00099"></a>00099 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> lms_db_audio_t *<a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00100"></a>00100 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(lms_db_audio_t *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00101"></a>00101 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(lms_db_audio_t *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00102"></a>00102 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(lms_db_audio_t *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00099"></a>00099 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *<a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00100"></a>00100 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00101"></a>00101 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00102"></a>00102 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00103"></a>00103
<a name="l00104"></a>00104 <span class="comment">/* Video Records */</span>
<a name="l00105"></a><a class="code" href="structlms__video__info.html">00105</a> <span class="keyword">struct </span><a class="code" href="structlms__video__info.html">lms_video_info</a> {
<a name="l00108"></a><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">00108</a> <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>;
<a name="l00109"></a>00109 };
<a name="l00110"></a>00110
-<a name="l00111"></a><a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">00111</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_video lms_db_video_t;
+<a name="l00111"></a><a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">00111</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_video <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>;
<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> lms_db_video_t *<a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00114"></a>00114 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(lms_db_video_t *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00115"></a>00115 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(lms_db_video_t *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00116"></a>00116 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(lms_db_video_t *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00113"></a>00113 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *<a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00114"></a>00114 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00115"></a>00115 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00116"></a>00116 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00117"></a>00117
<a name="l00118"></a>00118 <span class="comment">/* Playlist Records */</span>
<a name="l00119"></a><a class="code" href="structlms__playlist__info.html">00119</a> <span class="keyword">struct </span><a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> {
<a name="l00122"></a><a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">00122</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a>;
<a name="l00123"></a>00123 };
<a name="l00124"></a>00124
-<a name="l00125"></a><a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">00125</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_playlist lms_db_playlist_t;
+<a name="l00125"></a><a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">00125</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>lms_db_playlist <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>;
<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> lms_db_playlist_t *<a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00128"></a>00128 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(lms_db_playlist_t *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00129"></a>00129 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(lms_db_playlist_t *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00130"></a>00130 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(lms_db_playlist_t *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00127"></a>00127 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *<a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00128"></a>00128 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00129"></a>00129 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00130"></a>00130 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00131"></a>00131
<a name="l00136"></a>00136 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span>}
<a name="l00138"></a>00138 <span class="preprocessor">#endif</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_DB_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db.h File Reference</h1><code>#include <<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>></code><br>
<code>#include <<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>></code><br>
<p>
-Include dependency graph for lightmediascanner_db.h:<p><center><img src="lightmediascanner__db_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_db.h_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db.h:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_db.h_map" alt=""></center>
<map name="src/lib/lightmediascanner_db.h_map">
-<area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="241,81,409,108"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="247,132,404,159"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="499,5,627,32"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="460,56,665,83"></map>
+<area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="305,84,505,111"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="529,84,721,111"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,162,160,188"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,162,437,188"></map>
+</div>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__db_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_db.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_db.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_db.hdep_map">
-<area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="245,5,467,32"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="244,56,468,83"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="241,107,471,133"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="245,157,467,184"></map>
+<area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="5,84,269,110"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="293,84,563,110"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="587,84,861,110"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="885,84,1149,110"></map>
+</div>
<p>
<a href="lightmediascanner__db_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_image </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_image </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_audio </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_audio </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_video </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_video </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef lms_db_playlist </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct lms_db_playlist </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_db.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="245,5,467,32">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="244,56,468,83">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="241,107,471,133">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="245,157,467,184">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="5,84,269,110">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="293,84,563,110">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="587,84,861,110">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="885,84,1149,110">
-754b6d086ad7fe3e71ecb28b280bf3a8
\ No newline at end of file
+f6604695541c988a48f21af4e4a879f3
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="241,81,409,108">
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="247,132,404,159">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="499,5,627,32">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="460,56,665,83">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="305,84,505,111">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="529,84,721,111">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,162,160,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,162,437,188">
-86eae6935af25b0833e6ae400acdd942
\ No newline at end of file
+de5c68f43f1cd08d223ac9f37db48282
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_db_audio.c</h1><a href="lightmediascanner__db__audio_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keyword">struct </span>lms_db_audio {
-<a name="l00007"></a>00007 sqlite3 *db;
-<a name="l00008"></a>00008 sqlite3_stmt *insert_audio;
-<a name="l00009"></a>00009 sqlite3_stmt *insert_artist;
-<a name="l00010"></a>00010 sqlite3_stmt *insert_album;
-<a name="l00011"></a>00011 sqlite3_stmt *insert_genre;
-<a name="l00012"></a>00012 sqlite3_stmt *get_artist;
-<a name="l00013"></a>00013 sqlite3_stmt *get_album;
-<a name="l00014"></a>00014 sqlite3_stmt *get_genre;
-<a name="l00015"></a>00015 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
-<a name="l00016"></a>00016 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
-<a name="l00017"></a>00017 };
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00022"></a>00022 _db_create(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
-<a name="l00023"></a>00023 {
-<a name="l00024"></a>00024 <span class="keywordtype">char</span> *err;
-<a name="l00025"></a>00025 <span class="keywordtype">int</span> r;
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 r = sqlite3_exec(db, sql, NULL, NULL, &err);
-<a name="l00028"></a>00028 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00029"></a>00029 fprintf(stderr, <span class="stringliteral">"ERROR: could not create \"%s\": %s\n"</span>, name, err);
-<a name="l00030"></a>00030 sqlite3_free(err);
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> -1;
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keywordflow">return</span> 0;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00038"></a>00038 _db_table_updater_audios_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00039"></a>00039 <span class="keywordtype">int</span> ret;
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_db_audio.c</h1><a href="lightmediascanner__db__audio_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_audio {
+<a name="l00027"></a>00027 sqlite3 *db;
+<a name="l00028"></a>00028 sqlite3_stmt *insert_audio;
+<a name="l00029"></a>00029 sqlite3_stmt *insert_artist;
+<a name="l00030"></a>00030 sqlite3_stmt *insert_album;
+<a name="l00031"></a>00031 sqlite3_stmt *insert_genre;
+<a name="l00032"></a>00032 sqlite3_stmt *get_artist;
+<a name="l00033"></a>00033 sqlite3_stmt *get_album;
+<a name="l00034"></a>00034 sqlite3_stmt *get_genre;
+<a name="l00035"></a>00035 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00036"></a>00036 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00037"></a>00037 };
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
<a name="l00040"></a>00040
-<a name="l00041"></a>00041 ret = _db_create(db, <span class="stringliteral">"audios"</span>,
-<a name="l00042"></a>00042 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audios ("</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"title TEXT, "</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"album_id INTEGER, "</span>
-<a name="l00046"></a>00046 <span class="stringliteral">"genre_id INTEGER, "</span>
-<a name="l00047"></a>00047 <span class="stringliteral">"trackno INTEGER, "</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"rating INTEGER, "</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"playcnt INTEGER"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">")"</span>);
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00052"></a>00052 <span class="keywordflow">goto</span> done;
+<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00042"></a>00042 _db_create(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keywordtype">char</span> *err;
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> r;
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 r = sqlite3_exec(db, sql, NULL, NULL, &err);
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049 fprintf(stderr, <span class="stringliteral">"ERROR: could not create \"%s\": %s\n"</span>, name, err);
+<a name="l00050"></a>00050 sqlite3_free(err);
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> -1;
+<a name="l00052"></a>00052 }
<a name="l00053"></a>00053
-<a name="l00054"></a>00054 ret = _db_create(db, <span class="stringliteral">"audios_title_idx"</span>,
-<a name="l00055"></a>00055 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"audios_title_idx ON audios (title)"</span>);
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00058"></a>00058 <span class="keywordflow">goto</span> done;
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 ret = _db_create(db, <span class="stringliteral">"audios_album_idx"</span>,
-<a name="l00061"></a>00061 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"audios_album_idx ON audios (album_id)"</span>);
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00064"></a>00064 <span class="keywordflow">goto</span> done;
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 ret = _db_create(db, <span class="stringliteral">"audios_genre_idx"</span>,
-<a name="l00067"></a>00067 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"audios_genre_idx ON audios (genre_id)"</span>);
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00070"></a>00070 <span class="keywordflow">goto</span> done;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 ret = _db_create(db, <span class="stringliteral">"audios_trackno_idx"</span>,
-<a name="l00073"></a>00073 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"audios_trackno_idx ON audios (trackno)"</span>);
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00076"></a>00076 <span class="keywordflow">goto</span> done;
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 ret = _db_create(db, <span class="stringliteral">"audios_playcnt_idx"</span>,
-<a name="l00079"></a>00079 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"audios_playcnt_idx ON audios (playcnt)"</span>);
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00082"></a>00082 <span class="keywordflow">goto</span> done;
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00085"></a>00085 <span class="stringliteral">"delete_audios_on_files_deleted "</span>
-<a name="l00086"></a>00086 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" DELETE FROM audios WHERE id = OLD.id; END;"</span>);
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00089"></a>00089 <span class="keywordflow">goto</span> done;
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00092"></a>00092 <span class="stringliteral">"delete_files_on_audios_deleted "</span>
-<a name="l00093"></a>00093 <span class="stringliteral">"DELETE ON audios FOR EACH ROW BEGIN"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 done:
-<a name="l00097"></a>00097 <span class="keywordflow">return</span> ret;
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_audios[] = {
-<a name="l00101"></a>00101 _db_table_updater_audios_0
-<a name="l00102"></a>00102 };
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00105"></a>00105 _db_table_updater_audio_artists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00106"></a>00106 <span class="keywordtype">int</span> ret;
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 ret = _db_create(db, <span class="stringliteral">"audio_artists"</span>,
-<a name="l00109"></a>00109 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_artists ("</span>
-<a name="l00110"></a>00110 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00111"></a>00111 <span class="stringliteral">"name TEXT UNIQUE"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">")"</span>);
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00114"></a>00114 <span class="keywordflow">goto</span> done;
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 ret = _db_create(db, <span class="stringliteral">"audio_artists_name_idx"</span>,
-<a name="l00117"></a>00117 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00118"></a>00118 <span class="stringliteral">"audio_artists_name_idx ON audio_artists (name)"</span>);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 done:
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> ret;
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_audio_artists[] = {
-<a name="l00125"></a>00125 _db_table_updater_audio_artists_0
-<a name="l00126"></a>00126 };
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00129"></a>00129 _db_table_updater_audio_albums_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00130"></a>00130 <span class="keywordtype">int</span> ret;
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 ret = _db_create(db, <span class="stringliteral">"audio_albums"</span>,
-<a name="l00133"></a>00133 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_albums ("</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00135"></a>00135 <span class="stringliteral">"artist_id INTEGER, "</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"name TEXT"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">")"</span>);
-<a name="l00138"></a>00138 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00139"></a>00139 <span class="keywordflow">goto</span> done;
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 ret = _db_create(db, <span class="stringliteral">"audio_albums_name_idx"</span>,
-<a name="l00142"></a>00142 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00145"></a>00145 <span class="keywordflow">goto</span> done;
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 ret = _db_create(db, <span class="stringliteral">"audio_albums_artist_idx"</span>,
-<a name="l00148"></a>00148 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"audio_albums_artist_idx ON audio_albums (artist_id)"</span>);
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00151"></a>00151 <span class="keywordflow">goto</span> done;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00154"></a>00154 <span class="stringliteral">"delete_audios_on_albums_deleted "</span>
-<a name="l00155"></a>00155 <span class="stringliteral">"DELETE ON audio_albums FOR EACH ROW BEGIN"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" DELETE FROM audios WHERE album_id = OLD.id; END;"</span>);
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00158"></a>00158 <span class="keywordflow">goto</span> done;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00161"></a>00161 <span class="stringliteral">"delete_audio_albums_on_artists_deleted "</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"DELETE ON audio_artists FOR EACH ROW BEGIN"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" DELETE FROM audio_albums WHERE artist_id = OLD.id; END;"</span>);
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 done:
-<a name="l00166"></a>00166 <span class="keywordflow">return</span> ret;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_audio_albums[] = {
-<a name="l00170"></a>00170 _db_table_updater_audio_albums_0
-<a name="l00171"></a>00171 };
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00174"></a>00174 _db_table_updater_audio_genres_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00175"></a>00175 <span class="keywordtype">int</span> ret;
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 ret = _db_create(db, <span class="stringliteral">"audio_genres"</span>,
-<a name="l00178"></a>00178 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_genres ("</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00180"></a>00180 <span class="stringliteral">"name TEXT UNIQUE"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">")"</span>);
-<a name="l00182"></a>00182 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00183"></a>00183 <span class="keywordflow">goto</span> done;
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 ret = _db_create(db, <span class="stringliteral">"audio_genres_name_idx"</span>,
-<a name="l00186"></a>00186 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> 0;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00058"></a>00058 _db_table_updater_audios_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="keywordflow">return</span> 0;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00064"></a>00064 _db_table_updater_audios_1(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="keywordtype">char</span> *err;
+<a name="l00067"></a>00067 <span class="keywordtype">int</span> ret;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 ret = sqlite3_exec(db, <span class="stringliteral">"DELETE FROM files"</span>, NULL, NULL, &err);
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (ret != SQLITE_OK) {
+<a name="l00071"></a>00071 fprintf(stderr, <span class="stringliteral">"ERROR: could not delete \"files\": %s\n"</span>, err);
+<a name="l00072"></a>00072 sqlite3_free(err);
+<a name="l00073"></a>00073 <span class="keywordflow">goto</span> done;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 ret = sqlite3_exec(db, <span class="stringliteral">"DROP TABLE IF EXISTS audios"</span>, NULL, NULL, &err);
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (ret != SQLITE_OK) {
+<a name="l00078"></a>00078 fprintf(stderr, <span class="stringliteral">"ERROR: could not drop \"audios\": %s\n"</span>, err);
+<a name="l00079"></a>00079 sqlite3_free(err);
+<a name="l00080"></a>00080 <span class="keywordflow">goto</span> done;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 ret = _db_create(db, <span class="stringliteral">"audios"</span>,
+<a name="l00084"></a>00084 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audios ("</span>
+<a name="l00085"></a>00085 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00086"></a>00086 <span class="stringliteral">"title TEXT, "</span>
+<a name="l00087"></a>00087 <span class="stringliteral">"album_id INTEGER, "</span>
+<a name="l00088"></a>00088 <span class="stringliteral">"artist_id INTEGER, "</span>
+<a name="l00089"></a>00089 <span class="stringliteral">"genre_id INTEGER, "</span>
+<a name="l00090"></a>00090 <span class="stringliteral">"trackno INTEGER, "</span>
+<a name="l00091"></a>00091 <span class="stringliteral">"rating INTEGER, "</span>
+<a name="l00092"></a>00092 <span class="stringliteral">"playcnt INTEGER"</span>
+<a name="l00093"></a>00093 <span class="stringliteral">")"</span>);
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00095"></a>00095 <span class="keywordflow">goto</span> done;
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 ret = _db_create(db, <span class="stringliteral">"audios_title_idx"</span>,
+<a name="l00098"></a>00098 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00099"></a>00099 <span class="stringliteral">"audios_title_idx ON audios (title)"</span>);
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00101"></a>00101 <span class="keywordflow">goto</span> done;
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 ret = _db_create(db, <span class="stringliteral">"audios_album_idx"</span>,
+<a name="l00104"></a>00104 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00105"></a>00105 <span class="stringliteral">"audios_album_idx ON audios (album_id)"</span>);
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00107"></a>00107 <span class="keywordflow">goto</span> done;
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 ret = _db_create(db, <span class="stringliteral">"audios_artist_idx"</span>,
+<a name="l00110"></a>00110 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00111"></a>00111 <span class="stringliteral">"audios_artist_idx ON audios (artist_id)"</span>);
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00113"></a>00113 <span class="keywordflow">goto</span> done;
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 ret = _db_create(db, <span class="stringliteral">"audios_genre_idx"</span>,
+<a name="l00116"></a>00116 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00117"></a>00117 <span class="stringliteral">"audios_genre_idx ON audios (genre_id)"</span>);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00119"></a>00119 <span class="keywordflow">goto</span> done;
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 ret = _db_create(db, <span class="stringliteral">"audios_trackno_idx"</span>,
+<a name="l00122"></a>00122 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00123"></a>00123 <span class="stringliteral">"audios_trackno_idx ON audios (trackno)"</span>);
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00125"></a>00125 <span class="keywordflow">goto</span> done;
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 ret = _db_create(db, <span class="stringliteral">"audios_playcnt_idx"</span>,
+<a name="l00128"></a>00128 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00129"></a>00129 <span class="stringliteral">"audios_playcnt_idx ON audios (playcnt)"</span>);
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00131"></a>00131 <span class="keywordflow">goto</span> done;
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00134"></a>00134 <span class="stringliteral">"delete_audios_on_files_deleted "</span>
+<a name="l00135"></a>00135 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN"</span>
+<a name="l00136"></a>00136 <span class="stringliteral">" DELETE FROM audios WHERE id = OLD.id; END;"</span>);
+<a name="l00137"></a>00137 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00138"></a>00138 <span class="keywordflow">goto</span> done;
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00141"></a>00141 <span class="stringliteral">"delete_files_on_audios_deleted "</span>
+<a name="l00142"></a>00142 <span class="stringliteral">"DELETE ON audios FOR EACH ROW BEGIN"</span>
+<a name="l00143"></a>00143 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 done:
+<a name="l00146"></a>00146 <span class="keywordflow">return</span> ret;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audios[] = {
+<a name="l00150"></a>00150 _db_table_updater_audios_0,
+<a name="l00151"></a>00151 _db_table_updater_audios_1
+<a name="l00152"></a>00152 };
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00155"></a>00155 _db_table_updater_audio_artists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00156"></a>00156 <span class="keywordtype">int</span> ret;
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 ret = _db_create(db, <span class="stringliteral">"audio_artists"</span>,
+<a name="l00159"></a>00159 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_artists ("</span>
+<a name="l00160"></a>00160 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00161"></a>00161 <span class="stringliteral">"name TEXT UNIQUE"</span>
+<a name="l00162"></a>00162 <span class="stringliteral">")"</span>);
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00164"></a>00164 <span class="keywordflow">goto</span> done;
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 ret = _db_create(db, <span class="stringliteral">"audio_artists_name_idx"</span>,
+<a name="l00167"></a>00167 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00168"></a>00168 <span class="stringliteral">"audio_artists_name_idx ON audio_artists (name)"</span>);
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 done:
+<a name="l00171"></a>00171 <span class="keywordflow">return</span> ret;
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_artists[] = {
+<a name="l00175"></a>00175 _db_table_updater_audio_artists_0
+<a name="l00176"></a>00176 };
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00179"></a>00179 _db_table_updater_audio_albums_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00180"></a>00180 <span class="keywordtype">int</span> ret;
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 ret = _db_create(db, <span class="stringliteral">"audio_albums"</span>,
+<a name="l00183"></a>00183 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_albums ("</span>
+<a name="l00184"></a>00184 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00185"></a>00185 <span class="stringliteral">"artist_id INTEGER, "</span>
+<a name="l00186"></a>00186 <span class="stringliteral">"name TEXT"</span>
+<a name="l00187"></a>00187 <span class="stringliteral">")"</span>);
<a name="l00188"></a>00188 <span class="keywordflow">if</span> (ret != 0)
<a name="l00189"></a>00189 <span class="keywordflow">goto</span> done;
<a name="l00190"></a>00190
-<a name="l00191"></a>00191 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00192"></a>00192 <span class="stringliteral">"delete_audios_on_genres_deleted "</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"DELETE ON audio_genres FOR EACH ROW BEGIN"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" DELETE FROM audios WHERE genre_id = OLD.id; END;"</span>);
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 done:
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> ret;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_audio_genres[] = {
-<a name="l00201"></a>00201 _db_table_updater_audio_genres_0
-<a name="l00202"></a>00202 };
-<a name="l00203"></a>00203
-<a name="l00204"></a><a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">00204</a> <span class="preprocessor">#define _DB_T_UPDATE(db, name, array) \</span>
-<a name="l00205"></a>00205 <span class="preprocessor"> lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</span>
-<a name="l00206"></a>00206 <span class="preprocessor"></span>
-<a name="l00207"></a>00207 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00208"></a>00208 _db_create_tables_if_required(sqlite3 *db)
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 <span class="keywordtype">int</span> ret;
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audios"</span>, _db_table_updater_audios);
-<a name="l00213"></a>00213 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00214"></a>00214 <span class="keywordflow">goto</span> done;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_artists"</span>, _db_table_updater_audio_artists);
-<a name="l00217"></a>00217 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00218"></a>00218 <span class="keywordflow">goto</span> done;
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_albums"</span>, _db_table_updater_audio_albums);
-<a name="l00221"></a>00221 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00222"></a>00222 <span class="keywordflow">goto</span> done;
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_genres"</span>, _db_table_updater_audio_genres);
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 done:
-<a name="l00227"></a>00227 <span class="keywordflow">return</span> ret;
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="preprocessor">#undef _DB_T_UPDATE</span>
-<a name="l00231"></a>00231 <span class="preprocessor"></span>
-<a name="l00246"></a>00246 <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *
-<a name="l00247"></a><a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">00247</a> <a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db)
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda;
-<a name="l00250"></a>00250 <span class="keywordtype">void</span> *p;
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
-<a name="l00253"></a>00253 lda = p;
-<a name="l00254"></a>00254 lda->_references++;
-<a name="l00255"></a>00255 <span class="keywordflow">return</span> lda;
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (!db)
-<a name="l00259"></a>00259 <span class="keywordflow">return</span> NULL;
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261 <span class="keywordflow">if</span> (_db_create_tables_if_required(db) != 0) {
-<a name="l00262"></a>00262 fprintf(stderr, <span class="stringliteral">"ERROR: could not create tables.\n"</span>);
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> NULL;
-<a name="l00264"></a>00264 }
+<a name="l00191"></a>00191 ret = _db_create(db, <span class="stringliteral">"audio_albums_name_idx"</span>,
+<a name="l00192"></a>00192 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00193"></a>00193 <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00195"></a>00195 <span class="keywordflow">goto</span> done;
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 ret = _db_create(db, <span class="stringliteral">"audio_albums_artist_idx"</span>,
+<a name="l00198"></a>00198 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00199"></a>00199 <span class="stringliteral">"audio_albums_artist_idx ON audio_albums (artist_id)"</span>);
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00201"></a>00201 <span class="keywordflow">goto</span> done;
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00204"></a>00204 <span class="stringliteral">"delete_audios_on_albums_deleted "</span>
+<a name="l00205"></a>00205 <span class="stringliteral">"DELETE ON audio_albums FOR EACH ROW BEGIN"</span>
+<a name="l00206"></a>00206 <span class="stringliteral">" DELETE FROM audios WHERE album_id = OLD.id; END;"</span>);
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00208"></a>00208 <span class="keywordflow">goto</span> done;
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00211"></a>00211 <span class="stringliteral">"delete_audio_albums_on_artists_deleted "</span>
+<a name="l00212"></a>00212 <span class="stringliteral">"DELETE ON audio_artists FOR EACH ROW BEGIN"</span>
+<a name="l00213"></a>00213 <span class="stringliteral">" DELETE FROM audio_albums WHERE artist_id = OLD.id; END;"</span>);
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215 done:
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> ret;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_albums[] = {
+<a name="l00220"></a>00220 _db_table_updater_audio_albums_0
+<a name="l00221"></a>00221 };
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00224"></a>00224 _db_table_updater_audio_genres_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00225"></a>00225 <span class="keywordtype">int</span> ret;
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 ret = _db_create(db, <span class="stringliteral">"audio_genres"</span>,
+<a name="l00228"></a>00228 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS audio_genres ("</span>
+<a name="l00229"></a>00229 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00230"></a>00230 <span class="stringliteral">"name TEXT UNIQUE"</span>
+<a name="l00231"></a>00231 <span class="stringliteral">")"</span>);
+<a name="l00232"></a>00232 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00233"></a>00233 <span class="keywordflow">goto</span> done;
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235 ret = _db_create(db, <span class="stringliteral">"audio_genres_name_idx"</span>,
+<a name="l00236"></a>00236 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS "</span>
+<a name="l00237"></a>00237 <span class="stringliteral">"audio_albums_name_idx ON audio_albums (name)"</span>);
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00239"></a>00239 <span class="keywordflow">goto</span> done;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00242"></a>00242 <span class="stringliteral">"delete_audios_on_genres_deleted "</span>
+<a name="l00243"></a>00243 <span class="stringliteral">"DELETE ON audio_genres FOR EACH ROW BEGIN"</span>
+<a name="l00244"></a>00244 <span class="stringliteral">" DELETE FROM audios WHERE genre_id = OLD.id; END;"</span>);
+<a name="l00245"></a>00245
+<a name="l00246"></a>00246 done:
+<a name="l00247"></a>00247 <span class="keywordflow">return</span> ret;
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_audio_genres[] = {
+<a name="l00251"></a>00251 _db_table_updater_audio_genres_0
+<a name="l00252"></a>00252 };
+<a name="l00253"></a>00253
+<a name="l00254"></a><a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">00254</a> <span class="preprocessor">#define _DB_T_UPDATE(db, name, array) \</span>
+<a name="l00255"></a>00255 <span class="preprocessor"> lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span>
+<a name="l00257"></a>00257 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00258"></a>00258 _db_create_tables_if_required(sqlite3 *db)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keywordtype">int</span> ret;
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audios"</span>, _db_table_updater_audios);
+<a name="l00263"></a>00263 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00264"></a>00264 <span class="keywordflow">goto</span> done;
<a name="l00265"></a>00265
-<a name="l00266"></a>00266 lda = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>));
-<a name="l00267"></a>00267 lda->_references = 1;
-<a name="l00268"></a>00268 lda->db = db;
+<a name="l00266"></a>00266 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_artists"</span>, _db_table_updater_audio_artists);
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00268"></a>00268 <span class="keywordflow">goto</span> done;
<a name="l00269"></a>00269
-<a name="l00270"></a>00270 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, lda) != 0) {
-<a name="l00271"></a>00271 <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(lda);
-<a name="l00272"></a>00272 <span class="keywordflow">return</span> NULL;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordflow">return</span> lda;
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277
-<a name="l00290"></a>00290 <span class="keywordtype">int</span>
-<a name="l00291"></a><a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">00291</a> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
-<a name="l00292"></a>00292 {
-<a name="l00293"></a>00293 <span class="keywordflow">if</span> (!lda)
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> -1;
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (lda->_is_started)
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> 0;
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 lda->insert_audio = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00299"></a>00299 <span class="stringliteral">"INSERT OR REPLACE INTO audios "</span>
-<a name="l00300"></a>00300 <span class="stringliteral">"(id, title, album_id, genre_id, trackno, rating, playcnt) "</span>
-<a name="l00301"></a>00301 <span class="stringliteral">"VALUES (?, ?, ?, ?, ?, ?, ?)"</span>);
-<a name="l00302"></a>00302 <span class="keywordflow">if</span> (!lda->insert_audio)
-<a name="l00303"></a>00303 <span class="keywordflow">return</span> -2;
-<a name="l00304"></a>00304
-<a name="l00305"></a>00305 lda->insert_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00306"></a>00306 <span class="stringliteral">"INSERT INTO audio_artists (name) VALUES (?)"</span>);
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (!lda->insert_artist)
-<a name="l00308"></a>00308 <span class="keywordflow">return</span> -3;
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 lda->insert_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00311"></a>00311 <span class="stringliteral">"INSERT INTO audio_albums (artist_id, name) VALUES (?, ?)"</span>);
-<a name="l00312"></a>00312 <span class="keywordflow">if</span> (!lda->insert_album)
-<a name="l00313"></a>00313 <span class="keywordflow">return</span> -4;
-<a name="l00314"></a>00314
-<a name="l00315"></a>00315 lda->insert_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00316"></a>00316 <span class="stringliteral">"INSERT INTO audio_genres (name) VALUES (?)"</span>);
-<a name="l00317"></a>00317 <span class="keywordflow">if</span> (!lda->insert_genre)
-<a name="l00318"></a>00318 <span class="keywordflow">return</span> -5;
+<a name="l00270"></a>00270 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_albums"</span>, _db_table_updater_audio_albums);
+<a name="l00271"></a>00271 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00272"></a>00272 <span class="keywordflow">goto</span> done;
+<a name="l00273"></a>00273
+<a name="l00274"></a>00274 ret = <a class="code" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, <span class="stringliteral">"audio_genres"</span>, _db_table_updater_audio_genres);
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 done:
+<a name="l00277"></a>00277 <span class="keywordflow">return</span> ret;
+<a name="l00278"></a>00278 }
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="preprocessor">#undef _DB_T_UPDATE</span>
+<a name="l00281"></a>00281 <span class="preprocessor"></span>
+<a name="l00296"></a>00296 <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *
+<a name="l00297"></a><a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">00297</a> <a class="code" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a>(sqlite3 *db)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda;
+<a name="l00300"></a>00300 <span class="keywordtype">void</span> *p;
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
+<a name="l00303"></a>00303 lda = p;
+<a name="l00304"></a>00304 lda->_references++;
+<a name="l00305"></a>00305 <span class="keywordflow">return</span> lda;
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308 <span class="keywordflow">if</span> (!db)
+<a name="l00309"></a>00309 <span class="keywordflow">return</span> NULL;
+<a name="l00310"></a>00310
+<a name="l00311"></a>00311 <span class="keywordflow">if</span> (_db_create_tables_if_required(db) != 0) {
+<a name="l00312"></a>00312 fprintf(stderr, <span class="stringliteral">"ERROR: could not create tables.\n"</span>);
+<a name="l00313"></a>00313 <span class="keywordflow">return</span> NULL;
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315
+<a name="l00316"></a>00316 lda = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>));
+<a name="l00317"></a>00317 lda->_references = 1;
+<a name="l00318"></a>00318 lda->db = db;
<a name="l00319"></a>00319
-<a name="l00320"></a>00320 lda->get_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00321"></a>00321 <span class="stringliteral">"SELECT id FROM audio_artists WHERE name = ? LIMIT 1"</span>);
-<a name="l00322"></a>00322 <span class="keywordflow">if</span> (!lda->get_artist)
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> -6;
+<a name="l00320"></a>00320 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, lda) != 0) {
+<a name="l00321"></a>00321 <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(lda);
+<a name="l00322"></a>00322 <span class="keywordflow">return</span> NULL;
+<a name="l00323"></a>00323 }
<a name="l00324"></a>00324
-<a name="l00325"></a>00325 lda->get_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00326"></a>00326 <span class="stringliteral">"SELECT id FROM audio_albums WHERE name = ? AND artist_id = ? LIMIT 1"</span>);
-<a name="l00327"></a>00327 <span class="keywordflow">if</span> (!lda->get_album)
-<a name="l00328"></a>00328 <span class="keywordflow">return</span> -7;
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 lda->get_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
-<a name="l00331"></a>00331 <span class="stringliteral">"SELECT id FROM audio_genres WHERE name = ? LIMIT 1"</span>);
-<a name="l00332"></a>00332 <span class="keywordflow">if</span> (!lda->get_genre)
-<a name="l00333"></a>00333 <span class="keywordflow">return</span> -8;
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335 lda->_is_started = 1;
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> 0;
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00351"></a>00351 <span class="keywordtype">int</span>
-<a name="l00352"></a><a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">00352</a> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
-<a name="l00353"></a>00353 {
-<a name="l00354"></a>00354 <span class="keywordtype">int</span> r;
-<a name="l00355"></a>00355
-<a name="l00356"></a>00356 <span class="keywordflow">if</span> (!lda)
-<a name="l00357"></a>00357 <span class="keywordflow">return</span> -1;
-<a name="l00358"></a>00358 <span class="keywordflow">if</span> (lda->_references == 0) {
-<a name="l00359"></a>00359 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_audio_free(%p)\n"</span>, lda);
-<a name="l00360"></a>00360 <span class="keywordflow">return</span> -1;
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362
-<a name="l00363"></a>00363 lda->_references--;
-<a name="l00364"></a>00364 <span class="keywordflow">if</span> (lda->_references > 0)
-<a name="l00365"></a>00365 <span class="keywordflow">return</span> 0;
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <span class="keywordflow">if</span> (lda->insert_audio)
-<a name="l00368"></a>00368 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_audio, <span class="stringliteral">"insert_audio"</span>);
+<a name="l00325"></a>00325 <span class="keywordflow">return</span> lda;
+<a name="l00326"></a>00326 }
+<a name="l00327"></a>00327
+<a name="l00340"></a>00340 <span class="keywordtype">int</span>
+<a name="l00341"></a><a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">00341</a> <a class="code" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
+<a name="l00342"></a>00342 {
+<a name="l00343"></a>00343 <span class="keywordflow">if</span> (!lda)
+<a name="l00344"></a>00344 <span class="keywordflow">return</span> -1;
+<a name="l00345"></a>00345 <span class="keywordflow">if</span> (lda->_is_started)
+<a name="l00346"></a>00346 <span class="keywordflow">return</span> 0;
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348 lda->insert_audio = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00349"></a>00349 <span class="stringliteral">"INSERT OR REPLACE INTO audios "</span>
+<a name="l00350"></a>00350 <span class="stringliteral">"(id, title, album_id, artist_id, genre_id, trackno, rating, playcnt) "</span>
+<a name="l00351"></a>00351 <span class="stringliteral">"VALUES (?, ?, ?, ?, ?, ?, ?, ?)"</span>);
+<a name="l00352"></a>00352 <span class="keywordflow">if</span> (!lda->insert_audio)
+<a name="l00353"></a>00353 <span class="keywordflow">return</span> -2;
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 lda->insert_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00356"></a>00356 <span class="stringliteral">"INSERT INTO audio_artists (name) VALUES (?)"</span>);
+<a name="l00357"></a>00357 <span class="keywordflow">if</span> (!lda->insert_artist)
+<a name="l00358"></a>00358 <span class="keywordflow">return</span> -3;
+<a name="l00359"></a>00359
+<a name="l00360"></a>00360 lda->insert_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00361"></a>00361 <span class="stringliteral">"INSERT INTO audio_albums (artist_id, name) VALUES (?, ?)"</span>);
+<a name="l00362"></a>00362 <span class="keywordflow">if</span> (!lda->insert_album)
+<a name="l00363"></a>00363 <span class="keywordflow">return</span> -4;
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 lda->insert_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00366"></a>00366 <span class="stringliteral">"INSERT INTO audio_genres (name) VALUES (?)"</span>);
+<a name="l00367"></a>00367 <span class="keywordflow">if</span> (!lda->insert_genre)
+<a name="l00368"></a>00368 <span class="keywordflow">return</span> -5;
<a name="l00369"></a>00369
-<a name="l00370"></a>00370 <span class="keywordflow">if</span> (lda->insert_artist)
-<a name="l00371"></a>00371 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_artist, <span class="stringliteral">"insert_artist"</span>);
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373 <span class="keywordflow">if</span> (lda->insert_album)
-<a name="l00374"></a>00374 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_album, <span class="stringliteral">"insert_album"</span>);
-<a name="l00375"></a>00375
-<a name="l00376"></a>00376 <span class="keywordflow">if</span> (lda->insert_genre)
-<a name="l00377"></a>00377 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_genre, <span class="stringliteral">"insert_genre"</span>);
-<a name="l00378"></a>00378
-<a name="l00379"></a>00379 <span class="keywordflow">if</span> (lda->get_artist)
-<a name="l00380"></a>00380 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_artist, <span class="stringliteral">"get_artist"</span>);
-<a name="l00381"></a>00381
-<a name="l00382"></a>00382 <span class="keywordflow">if</span> (lda->get_album)
-<a name="l00383"></a>00383 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_album, <span class="stringliteral">"get_album"</span>);
+<a name="l00370"></a>00370 lda->get_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00371"></a>00371 <span class="stringliteral">"SELECT id FROM audio_artists WHERE name = ? LIMIT 1"</span>);
+<a name="l00372"></a>00372 <span class="keywordflow">if</span> (!lda->get_artist)
+<a name="l00373"></a>00373 <span class="keywordflow">return</span> -6;
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375 lda->get_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00376"></a>00376 <span class="stringliteral">"SELECT id FROM audio_albums WHERE name = ? AND artist_id = ? LIMIT 1"</span>);
+<a name="l00377"></a>00377 <span class="keywordflow">if</span> (!lda->get_album)
+<a name="l00378"></a>00378 <span class="keywordflow">return</span> -7;
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 lda->get_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda->db,
+<a name="l00381"></a>00381 <span class="stringliteral">"SELECT id FROM audio_genres WHERE name = ? LIMIT 1"</span>);
+<a name="l00382"></a>00382 <span class="keywordflow">if</span> (!lda->get_genre)
+<a name="l00383"></a>00383 <span class="keywordflow">return</span> -8;
<a name="l00384"></a>00384
-<a name="l00385"></a>00385 <span class="keywordflow">if</span> (lda->get_genre)
-<a name="l00386"></a>00386 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_genre, <span class="stringliteral">"get_genre"</span>);
-<a name="l00387"></a>00387
-<a name="l00388"></a>00388 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, lda->db, lda);
-<a name="l00389"></a>00389 free(lda);
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="keywordflow">return</span> r;
-<a name="l00392"></a>00392 }
-<a name="l00393"></a>00393
-<a name="l00394"></a>00394 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00395"></a>00395 _db_get_id_by_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
-<a name="l00396"></a>00396 {
-<a name="l00397"></a>00397 <span class="keywordtype">int</span> r, ret;
-<a name="l00398"></a>00398
-<a name="l00399"></a>00399 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00400"></a>00400 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00401"></a>00401 <span class="keywordflow">goto</span> done;
-<a name="l00402"></a>00402
-<a name="l00403"></a>00403 r = sqlite3_step(stmt);
-<a name="l00404"></a>00404 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
-<a name="l00405"></a>00405 ret = 1;
-<a name="l00406"></a>00406 <span class="keywordflow">goto</span> done;
-<a name="l00407"></a>00407 }
-<a name="l00408"></a>00408
-<a name="l00409"></a>00409 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
-<a name="l00410"></a>00410 fprintf(stderr, <span class="stringliteral">"ERROR: could not get id by name: %s\n"</span>,
-<a name="l00411"></a>00411 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00412"></a>00412 ret = -2;
-<a name="l00413"></a>00413 <span class="keywordflow">goto</span> done;
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416 *<span class="keywordtype">id</span> = sqlite3_column_int64(stmt, 0);
-<a name="l00417"></a>00417 ret = 0;
-<a name="l00418"></a>00418
-<a name="l00419"></a>00419 done:
-<a name="l00420"></a>00420 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00421"></a>00421
-<a name="l00422"></a>00422 <span class="keywordflow">return</span> ret;
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424 }
-<a name="l00425"></a>00425 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00426"></a>00426 _db_insert_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
-<a name="l00427"></a>00427 {
-<a name="l00428"></a>00428 <span class="keywordtype">int</span> r, ret;
-<a name="l00429"></a>00429
-<a name="l00430"></a>00430 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00431"></a>00431 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00432"></a>00432 <span class="keywordflow">goto</span> done;
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 r = sqlite3_step(stmt);
-<a name="l00435"></a>00435 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00436"></a>00436 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert name: %s\n"</span>,
-<a name="l00437"></a>00437 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00438"></a>00438 ret = -2;
-<a name="l00439"></a>00439 <span class="keywordflow">goto</span> done;
-<a name="l00440"></a>00440 }
-<a name="l00441"></a>00441
-<a name="l00442"></a>00442 *<span class="keywordtype">id</span> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
-<a name="l00443"></a>00443 ret = 0;
-<a name="l00444"></a>00444
-<a name="l00445"></a>00445 done:
-<a name="l00446"></a>00446 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00447"></a>00447
-<a name="l00448"></a>00448 <span class="keywordflow">return</span> ret;
-<a name="l00449"></a>00449 }
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00452"></a>00452 _db_get_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
-<a name="l00453"></a>00453 {
-<a name="l00454"></a>00454 <span class="keywordflow">return</span> _db_get_id_by_name(lda->get_artist, &info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
-<a name="l00455"></a>00455 }
-<a name="l00456"></a>00456
-<a name="l00457"></a>00457 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00458"></a>00458 _db_insert_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
-<a name="l00459"></a>00459 {
-<a name="l00460"></a>00460 <span class="keywordtype">int</span> r;
-<a name="l00461"></a>00461
-<a name="l00462"></a>00462 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown artist */</span>
-<a name="l00463"></a>00463 <span class="keywordflow">return</span> 1;
-<a name="l00464"></a>00464
-<a name="l00465"></a>00465 r =_db_get_artist(lda, info, artist_id);
-<a name="l00466"></a>00466 <span class="keywordflow">if</span> (r == 0)
-<a name="l00467"></a>00467 <span class="keywordflow">return</span> 0;
-<a name="l00468"></a>00468 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
-<a name="l00469"></a>00469 <span class="keywordflow">return</span> -1;
-<a name="l00470"></a>00470
-<a name="l00471"></a>00471 <span class="keywordflow">return</span> _db_insert_name(lda->insert_artist, &info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
-<a name="l00472"></a>00472 }
+<a name="l00385"></a>00385 lda->_is_started = 1;
+<a name="l00386"></a>00386 <span class="keywordflow">return</span> 0;
+<a name="l00387"></a>00387 }
+<a name="l00388"></a>00388
+<a name="l00401"></a>00401 <span class="keywordtype">int</span>
+<a name="l00402"></a><a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">00402</a> <a class="code" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)
+<a name="l00403"></a>00403 {
+<a name="l00404"></a>00404 <span class="keywordtype">int</span> r;
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406 <span class="keywordflow">if</span> (!lda)
+<a name="l00407"></a>00407 <span class="keywordflow">return</span> -1;
+<a name="l00408"></a>00408 <span class="keywordflow">if</span> (lda->_references == 0) {
+<a name="l00409"></a>00409 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_audio_free(%p)\n"</span>, lda);
+<a name="l00410"></a>00410 <span class="keywordflow">return</span> -1;
+<a name="l00411"></a>00411 }
+<a name="l00412"></a>00412
+<a name="l00413"></a>00413 lda->_references--;
+<a name="l00414"></a>00414 <span class="keywordflow">if</span> (lda->_references > 0)
+<a name="l00415"></a>00415 <span class="keywordflow">return</span> 0;
+<a name="l00416"></a>00416
+<a name="l00417"></a>00417 <span class="keywordflow">if</span> (lda->insert_audio)
+<a name="l00418"></a>00418 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_audio, <span class="stringliteral">"insert_audio"</span>);
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (lda->insert_artist)
+<a name="l00421"></a>00421 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_artist, <span class="stringliteral">"insert_artist"</span>);
+<a name="l00422"></a>00422
+<a name="l00423"></a>00423 <span class="keywordflow">if</span> (lda->insert_album)
+<a name="l00424"></a>00424 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_album, <span class="stringliteral">"insert_album"</span>);
+<a name="l00425"></a>00425
+<a name="l00426"></a>00426 <span class="keywordflow">if</span> (lda->insert_genre)
+<a name="l00427"></a>00427 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->insert_genre, <span class="stringliteral">"insert_genre"</span>);
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 <span class="keywordflow">if</span> (lda->get_artist)
+<a name="l00430"></a>00430 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_artist, <span class="stringliteral">"get_artist"</span>);
+<a name="l00431"></a>00431
+<a name="l00432"></a>00432 <span class="keywordflow">if</span> (lda->get_album)
+<a name="l00433"></a>00433 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_album, <span class="stringliteral">"get_album"</span>);
+<a name="l00434"></a>00434
+<a name="l00435"></a>00435 <span class="keywordflow">if</span> (lda->get_genre)
+<a name="l00436"></a>00436 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda->get_genre, <span class="stringliteral">"get_genre"</span>);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, lda->db, lda);
+<a name="l00439"></a>00439 free(lda);
+<a name="l00440"></a>00440
+<a name="l00441"></a>00441 <span class="keywordflow">return</span> r;
+<a name="l00442"></a>00442 }
+<a name="l00443"></a>00443
+<a name="l00444"></a>00444 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00445"></a>00445 _db_get_id_by_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
+<a name="l00446"></a>00446 {
+<a name="l00447"></a>00447 <span class="keywordtype">int</span> r, ret;
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00450"></a>00450 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00451"></a>00451 <span class="keywordflow">goto</span> done;
+<a name="l00452"></a>00452
+<a name="l00453"></a>00453 r = sqlite3_step(stmt);
+<a name="l00454"></a>00454 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00455"></a>00455 ret = 1;
+<a name="l00456"></a>00456 <span class="keywordflow">goto</span> done;
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458
+<a name="l00459"></a>00459 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00460"></a>00460 fprintf(stderr, <span class="stringliteral">"ERROR: could not get id by name: %s\n"</span>,
+<a name="l00461"></a>00461 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00462"></a>00462 ret = -2;
+<a name="l00463"></a>00463 <span class="keywordflow">goto</span> done;
+<a name="l00464"></a>00464 }
+<a name="l00465"></a>00465
+<a name="l00466"></a>00466 *<span class="keywordtype">id</span> = sqlite3_column_int64(stmt, 0);
+<a name="l00467"></a>00467 ret = 0;
+<a name="l00468"></a>00468
+<a name="l00469"></a>00469 done:
+<a name="l00470"></a>00470 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00471"></a>00471
+<a name="l00472"></a>00472 <span class="keywordflow">return</span> ret;
<a name="l00473"></a>00473
-<a name="l00474"></a>00474 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00475"></a>00475 _db_get_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id, int64_t *album_id)
-<a name="l00476"></a>00476 {
-<a name="l00477"></a>00477 sqlite3_stmt *stmt;
+<a name="l00474"></a>00474 }
+<a name="l00475"></a>00475 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00476"></a>00476 _db_insert_name(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *name, int64_t *<span class="keywordtype">id</span>)
+<a name="l00477"></a>00477 {
<a name="l00478"></a>00478 <span class="keywordtype">int</span> r, ret;
<a name="l00479"></a>00479
-<a name="l00480"></a>00480 stmt = lda->get_album;
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00483"></a>00483 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00484"></a>00484 <span class="keywordflow">goto</span> done;
-<a name="l00485"></a>00485
-<a name="l00486"></a>00486 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 2, artist_id);
-<a name="l00487"></a>00487 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00488"></a>00488 <span class="keywordflow">goto</span> done;
-<a name="l00489"></a>00489
-<a name="l00490"></a>00490 r = sqlite3_step(stmt);
-<a name="l00491"></a>00491 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
-<a name="l00492"></a>00492 ret = 1;
-<a name="l00493"></a>00493 <span class="keywordflow">goto</span> done;
-<a name="l00494"></a>00494 }
-<a name="l00495"></a>00495
-<a name="l00496"></a>00496 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
-<a name="l00497"></a>00497 fprintf(stderr, <span class="stringliteral">"ERROR: could not get album from table: %s\n"</span>,
-<a name="l00498"></a>00498 sqlite3_errmsg(lda->db));
-<a name="l00499"></a>00499 ret = -2;
-<a name="l00500"></a>00500 <span class="keywordflow">goto</span> done;
-<a name="l00501"></a>00501 }
-<a name="l00502"></a>00502
-<a name="l00503"></a>00503 *album_id = sqlite3_column_int64(stmt, 0);
-<a name="l00504"></a>00504 ret = 0;
-<a name="l00505"></a>00505
-<a name="l00506"></a>00506 done:
-<a name="l00507"></a>00507 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00508"></a>00508
-<a name="l00509"></a>00509 <span class="keywordflow">return</span> ret;
-<a name="l00510"></a>00510
-<a name="l00511"></a>00511 }
-<a name="l00512"></a>00512
-<a name="l00513"></a>00513 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00514"></a>00514 _db_insert_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id)
-<a name="l00515"></a>00515 {
-<a name="l00516"></a>00516 <span class="keywordtype">int</span> r, ret, ret_artist;
-<a name="l00517"></a>00517 int64_t artist_id;
-<a name="l00518"></a>00518 sqlite3_stmt *stmt;
-<a name="l00519"></a>00519
-<a name="l00520"></a>00520 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown album */</span>
-<a name="l00521"></a>00521 <span class="keywordflow">return</span> 1;
-<a name="l00522"></a>00522
-<a name="l00523"></a>00523 ret_artist = _db_insert_artist(lda, info, &artist_id);
-<a name="l00524"></a>00524 <span class="keywordflow">if</span> (ret_artist < 0)
-<a name="l00525"></a>00525 <span class="keywordflow">return</span> -1;
-<a name="l00526"></a>00526
-<a name="l00527"></a>00527 r =_db_get_album(lda, info,
-<a name="l00528"></a>00528 (ret_artist == 0) ? &artist_id : NULL,
-<a name="l00529"></a>00529 album_id);
-<a name="l00530"></a>00530 <span class="keywordflow">if</span> (r == 0)
-<a name="l00531"></a>00531 <span class="keywordflow">return</span> 0;
-<a name="l00532"></a>00532 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
-<a name="l00533"></a>00533 <span class="keywordflow">return</span> -1;
-<a name="l00534"></a>00534
-<a name="l00535"></a>00535 stmt = lda->insert_album;
-<a name="l00536"></a>00536 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 1,
-<a name="l00537"></a>00537 (ret_artist == 0) ? &artist_id : NULL);
-<a name="l00538"></a>00538 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00539"></a>00539 <span class="keywordflow">goto</span> done;
-<a name="l00540"></a>00540
-<a name="l00541"></a>00541 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00542"></a>00542 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00480"></a>00480 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, name-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00481"></a>00481 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00482"></a>00482 <span class="keywordflow">goto</span> done;
+<a name="l00483"></a>00483
+<a name="l00484"></a>00484 r = sqlite3_step(stmt);
+<a name="l00485"></a>00485 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00486"></a>00486 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert name: %s\n"</span>,
+<a name="l00487"></a>00487 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00488"></a>00488 ret = -2;
+<a name="l00489"></a>00489 <span class="keywordflow">goto</span> done;
+<a name="l00490"></a>00490 }
+<a name="l00491"></a>00491
+<a name="l00492"></a>00492 *<span class="keywordtype">id</span> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+<a name="l00493"></a>00493 ret = 0;
+<a name="l00494"></a>00494
+<a name="l00495"></a>00495 done:
+<a name="l00496"></a>00496 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00497"></a>00497
+<a name="l00498"></a>00498 <span class="keywordflow">return</span> ret;
+<a name="l00499"></a>00499 }
+<a name="l00500"></a>00500
+<a name="l00501"></a>00501 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00502"></a>00502 _db_get_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
+<a name="l00503"></a>00503 {
+<a name="l00504"></a>00504 <span class="keywordflow">return</span> _db_get_id_by_name(lda->get_artist, &info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
+<a name="l00505"></a>00505 }
+<a name="l00506"></a>00506
+<a name="l00507"></a>00507 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00508"></a>00508 _db_insert_artist(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id)
+<a name="l00509"></a>00509 {
+<a name="l00510"></a>00510 <span class="keywordtype">int</span> r;
+<a name="l00511"></a>00511
+<a name="l00512"></a>00512 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown artist */</span>
+<a name="l00513"></a>00513 <span class="keywordflow">return</span> 1;
+<a name="l00514"></a>00514
+<a name="l00515"></a>00515 r =_db_get_artist(lda, info, artist_id);
+<a name="l00516"></a>00516 <span class="keywordflow">if</span> (r == 0)
+<a name="l00517"></a>00517 <span class="keywordflow">return</span> 0;
+<a name="l00518"></a>00518 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
+<a name="l00519"></a>00519 <span class="keywordflow">return</span> -1;
+<a name="l00520"></a>00520
+<a name="l00521"></a>00521 <span class="keywordflow">return</span> _db_insert_name(lda->insert_artist, &info-><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
+<a name="l00522"></a>00522 }
+<a name="l00523"></a>00523
+<a name="l00524"></a>00524 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00525"></a>00525 _db_get_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *artist_id, int64_t *album_id)
+<a name="l00526"></a>00526 {
+<a name="l00527"></a>00527 sqlite3_stmt *stmt;
+<a name="l00528"></a>00528 <span class="keywordtype">int</span> r, ret;
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 stmt = lda->get_album;
+<a name="l00531"></a>00531
+<a name="l00532"></a>00532 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00533"></a>00533 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00534"></a>00534 <span class="keywordflow">goto</span> done;
+<a name="l00535"></a>00535
+<a name="l00536"></a>00536 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 2, artist_id);
+<a name="l00537"></a>00537 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00538"></a>00538 <span class="keywordflow">goto</span> done;
+<a name="l00539"></a>00539
+<a name="l00540"></a>00540 r = sqlite3_step(stmt);
+<a name="l00541"></a>00541 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00542"></a>00542 ret = 1;
<a name="l00543"></a>00543 <span class="keywordflow">goto</span> done;
-<a name="l00544"></a>00544
-<a name="l00545"></a>00545 r = sqlite3_step(stmt);
-<a name="l00546"></a>00546 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00547"></a>00547 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio album: %s\n"</span>,
+<a name="l00544"></a>00544 }
+<a name="l00545"></a>00545
+<a name="l00546"></a>00546 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00547"></a>00547 fprintf(stderr, <span class="stringliteral">"ERROR: could not get album from table: %s\n"</span>,
<a name="l00548"></a>00548 sqlite3_errmsg(lda->db));
-<a name="l00549"></a>00549 ret = -3;
+<a name="l00549"></a>00549 ret = -2;
<a name="l00550"></a>00550 <span class="keywordflow">goto</span> done;
<a name="l00551"></a>00551 }
<a name="l00552"></a>00552
-<a name="l00553"></a>00553 *album_id = sqlite3_last_insert_rowid(lda->db);
+<a name="l00553"></a>00553 *album_id = sqlite3_column_int64(stmt, 0);
<a name="l00554"></a>00554 ret = 0;
<a name="l00555"></a>00555
<a name="l00556"></a>00556 done:
<a name="l00557"></a>00557 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
<a name="l00558"></a>00558
<a name="l00559"></a>00559 <span class="keywordflow">return</span> ret;
-<a name="l00560"></a>00560 }
-<a name="l00561"></a>00561
-<a name="l00562"></a>00562 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00563"></a>00563 _db_get_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
-<a name="l00564"></a>00564 {
-<a name="l00565"></a>00565 <span class="keywordflow">return</span> _db_get_id_by_name(lda->get_genre, &info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
-<a name="l00566"></a>00566 }
-<a name="l00567"></a>00567
-<a name="l00568"></a>00568 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00569"></a>00569 _db_insert_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
-<a name="l00570"></a>00570 {
-<a name="l00571"></a>00571 <span class="keywordtype">int</span> r;
-<a name="l00572"></a>00572
-<a name="l00573"></a>00573 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown genre */</span>
-<a name="l00574"></a>00574 <span class="keywordflow">return</span> 1;
-<a name="l00575"></a>00575
-<a name="l00576"></a>00576 r =_db_get_genre(lda, info, genre_id);
-<a name="l00577"></a>00577 <span class="keywordflow">if</span> (r == 0)
-<a name="l00578"></a>00578 <span class="keywordflow">return</span> 0;
-<a name="l00579"></a>00579 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
-<a name="l00580"></a>00580 <span class="keywordflow">return</span> -1;
-<a name="l00581"></a>00581
-<a name="l00582"></a>00582 <span class="keywordflow">return</span> _db_insert_name(lda->insert_genre, &info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
-<a name="l00583"></a>00583 }
-<a name="l00584"></a>00584
-<a name="l00585"></a>00585 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00586"></a>00586 _db_insert_audio(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id, int64_t *genre_id)
-<a name="l00587"></a>00587 {
-<a name="l00588"></a>00588 sqlite3_stmt *stmt;
-<a name="l00589"></a>00589 <span class="keywordtype">int</span> r, ret;
-<a name="l00590"></a>00590
-<a name="l00591"></a>00591 stmt = lda->insert_audio;
-<a name="l00592"></a>00592 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a>);
-<a name="l00593"></a>00593 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00594"></a>00594 <span class="keywordflow">goto</span> done;
-<a name="l00595"></a>00595
-<a name="l00596"></a>00596 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00597"></a>00597 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00598"></a>00598 <span class="keywordflow">goto</span> done;
-<a name="l00599"></a>00599
-<a name="l00600"></a>00600 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 3, album_id);
-<a name="l00601"></a>00601 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00602"></a>00602 <span class="keywordflow">goto</span> done;
+<a name="l00560"></a>00560
+<a name="l00561"></a>00561 }
+<a name="l00562"></a>00562
+<a name="l00563"></a>00563 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00564"></a>00564 _db_insert_album(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id, int64_t *artist_id)
+<a name="l00565"></a>00565 {
+<a name="l00566"></a>00566 <span class="keywordtype">int</span> r, ret;
+<a name="l00567"></a>00567 sqlite3_stmt *stmt;
+<a name="l00568"></a>00568
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown album */</span>
+<a name="l00570"></a>00570 <span class="keywordflow">return</span> 1;
+<a name="l00571"></a>00571
+<a name="l00572"></a>00572 r =_db_get_album(lda, info, artist_id, album_id);
+<a name="l00573"></a>00573 <span class="keywordflow">if</span> (r == 0)
+<a name="l00574"></a>00574 <span class="keywordflow">return</span> 0;
+<a name="l00575"></a>00575 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
+<a name="l00576"></a>00576 <span class="keywordflow">return</span> -1;
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578 stmt = lda->insert_album;
+<a name="l00579"></a>00579 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 1, artist_id);
+<a name="l00580"></a>00580 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00581"></a>00581 <span class="keywordflow">goto</span> done;
+<a name="l00582"></a>00582
+<a name="l00583"></a>00583 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00584"></a>00584 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00585"></a>00585 <span class="keywordflow">goto</span> done;
+<a name="l00586"></a>00586
+<a name="l00587"></a>00587 r = sqlite3_step(stmt);
+<a name="l00588"></a>00588 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00589"></a>00589 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio album: %s\n"</span>,
+<a name="l00590"></a>00590 sqlite3_errmsg(lda->db));
+<a name="l00591"></a>00591 ret = -3;
+<a name="l00592"></a>00592 <span class="keywordflow">goto</span> done;
+<a name="l00593"></a>00593 }
+<a name="l00594"></a>00594
+<a name="l00595"></a>00595 *album_id = sqlite3_last_insert_rowid(lda->db);
+<a name="l00596"></a>00596 ret = 0;
+<a name="l00597"></a>00597
+<a name="l00598"></a>00598 done:
+<a name="l00599"></a>00599 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00600"></a>00600
+<a name="l00601"></a>00601 <span class="keywordflow">return</span> ret;
+<a name="l00602"></a>00602 }
<a name="l00603"></a>00603
-<a name="l00604"></a>00604 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 4, genre_id);
-<a name="l00605"></a>00605 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00606"></a>00606 <span class="keywordflow">goto</span> done;
-<a name="l00607"></a>00607
-<a name="l00608"></a>00608 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 5, info-><a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a>);
-<a name="l00609"></a>00609 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00610"></a>00610 <span class="keywordflow">goto</span> done;
-<a name="l00611"></a>00611
-<a name="l00612"></a>00612 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-><a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a>);
-<a name="l00613"></a>00613 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00614"></a>00614 <span class="keywordflow">goto</span> done;
-<a name="l00615"></a>00615
-<a name="l00616"></a>00616 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-><a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a>);
-<a name="l00617"></a>00617 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00618"></a>00618 <span class="keywordflow">goto</span> done;
-<a name="l00619"></a>00619
-<a name="l00620"></a>00620 r = sqlite3_step(stmt);
-<a name="l00621"></a>00621 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00622"></a>00622 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio info: %s\n"</span>,
-<a name="l00623"></a>00623 sqlite3_errmsg(lda->db));
-<a name="l00624"></a>00624 ret = -8;
-<a name="l00625"></a>00625 <span class="keywordflow">goto</span> done;
-<a name="l00626"></a>00626 }
-<a name="l00627"></a>00627
-<a name="l00628"></a>00628 ret = 0;
-<a name="l00629"></a>00629
-<a name="l00630"></a>00630 done:
-<a name="l00631"></a>00631 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00604"></a>00604 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00605"></a>00605 _db_get_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
+<a name="l00606"></a>00606 {
+<a name="l00607"></a>00607 <span class="keywordflow">return</span> _db_get_id_by_name(lda->get_genre, &info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
+<a name="l00608"></a>00608 }
+<a name="l00609"></a>00609
+<a name="l00610"></a>00610 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00611"></a>00611 _db_insert_genre(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *genre_id)
+<a name="l00612"></a>00612 {
+<a name="l00613"></a>00613 <span class="keywordtype">int</span> r;
+<a name="l00614"></a>00614
+<a name="l00615"></a>00615 <span class="keywordflow">if</span> (!info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>) <span class="comment">/* fast path for unknown genre */</span>
+<a name="l00616"></a>00616 <span class="keywordflow">return</span> 1;
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 r =_db_get_genre(lda, info, genre_id);
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (r == 0)
+<a name="l00620"></a>00620 <span class="keywordflow">return</span> 0;
+<a name="l00621"></a>00621 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0)
+<a name="l00622"></a>00622 <span class="keywordflow">return</span> -1;
+<a name="l00623"></a>00623
+<a name="l00624"></a>00624 <span class="keywordflow">return</span> _db_insert_name(lda->insert_genre, &info-><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>, genre_id);
+<a name="l00625"></a>00625 }
+<a name="l00626"></a>00626
+<a name="l00627"></a>00627 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00628"></a>00628 _db_insert_audio(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info, int64_t *album_id, int64_t *artist_id, int64_t *genre_id)
+<a name="l00629"></a>00629 {
+<a name="l00630"></a>00630 sqlite3_stmt *stmt;
+<a name="l00631"></a>00631 <span class="keywordtype">int</span> r, ret;
<a name="l00632"></a>00632
-<a name="l00633"></a>00633 <span class="keywordflow">return</span> ret;
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635
-<a name="l00647"></a>00647 <span class="keywordtype">int</span>
-<a name="l00648"></a><a class="code" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">00648</a> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info)
-<a name="l00649"></a>00649 {
-<a name="l00650"></a>00650 int64_t album_id, genre_id;
-<a name="l00651"></a>00651 <span class="keywordtype">int</span> ret_album, ret_genre;
-<a name="l00652"></a>00652
-<a name="l00653"></a>00653 <span class="keywordflow">if</span> (!lda)
-<a name="l00654"></a>00654 <span class="keywordflow">return</span> -1;
-<a name="l00655"></a>00655 <span class="keywordflow">if</span> (!info)
-<a name="l00656"></a>00656 <span class="keywordflow">return</span> -2;
-<a name="l00657"></a>00657 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a> < 1)
-<a name="l00658"></a>00658 <span class="keywordflow">return</span> -3;
-<a name="l00659"></a>00659
-<a name="l00660"></a>00660 ret_album = _db_insert_album(lda, info, &album_id);
-<a name="l00661"></a>00661 <span class="keywordflow">if</span> (ret_album < 0)
-<a name="l00662"></a>00662 <span class="keywordflow">return</span> -4;
-<a name="l00663"></a>00663
-<a name="l00664"></a>00664 ret_genre = _db_insert_genre(lda, info, &genre_id);
-<a name="l00665"></a>00665 <span class="keywordflow">if</span> (ret_genre < 0)
-<a name="l00666"></a>00666 <span class="keywordflow">return</span> -5;
-<a name="l00667"></a>00667
-<a name="l00668"></a>00668 <span class="keywordflow">return</span> _db_insert_audio(lda, info,
-<a name="l00669"></a>00669 (ret_album == 0) ? &album_id : NULL,
-<a name="l00670"></a>00670 (ret_genre == 0) ? &genre_id : NULL);
-<a name="l00671"></a>00671 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00633"></a>00633 stmt = lda->insert_audio;
+<a name="l00634"></a>00634 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a>);
+<a name="l00635"></a>00635 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00636"></a>00636 <span class="keywordflow">goto</span> done;
+<a name="l00637"></a>00637
+<a name="l00638"></a>00638 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00639"></a>00639 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00640"></a>00640 <span class="keywordflow">goto</span> done;
+<a name="l00641"></a>00641
+<a name="l00642"></a>00642 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 3, album_id);
+<a name="l00643"></a>00643 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00644"></a>00644 <span class="keywordflow">goto</span> done;
+<a name="l00645"></a>00645
+<a name="l00646"></a>00646 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 4, artist_id);
+<a name="l00647"></a>00647 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00648"></a>00648 <span class="keywordflow">goto</span> done;
+<a name="l00649"></a>00649
+<a name="l00650"></a>00650 ret = <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(stmt, 5, genre_id);
+<a name="l00651"></a>00651 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00652"></a>00652 <span class="keywordflow">goto</span> done;
+<a name="l00653"></a>00653
+<a name="l00654"></a>00654 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-><a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a>);
+<a name="l00655"></a>00655 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00656"></a>00656 <span class="keywordflow">goto</span> done;
+<a name="l00657"></a>00657
+<a name="l00658"></a>00658 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-><a class="code" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</a>);
+<a name="l00659"></a>00659 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00660"></a>00660 <span class="keywordflow">goto</span> done;
+<a name="l00661"></a>00661
+<a name="l00662"></a>00662 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 8, info-><a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a>);
+<a name="l00663"></a>00663 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00664"></a>00664 <span class="keywordflow">goto</span> done;
+<a name="l00665"></a>00665
+<a name="l00666"></a>00666 r = sqlite3_step(stmt);
+<a name="l00667"></a>00667 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00668"></a>00668 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert audio info: %s\n"</span>,
+<a name="l00669"></a>00669 sqlite3_errmsg(lda->db));
+<a name="l00670"></a>00670 ret = -9;
+<a name="l00671"></a>00671 <span class="keywordflow">goto</span> done;
+<a name="l00672"></a>00672 }
+<a name="l00673"></a>00673
+<a name="l00674"></a>00674 ret = 0;
+<a name="l00675"></a>00675
+<a name="l00676"></a>00676 done:
+<a name="l00677"></a>00677 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00678"></a>00678
+<a name="l00679"></a>00679 <span class="keywordflow">return</span> ret;
+<a name="l00680"></a>00680 }
+<a name="l00681"></a>00681
+<a name="l00693"></a>00693 <span class="keywordtype">int</span>
+<a name="l00694"></a><a class="code" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">00694</a> <a class="code" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a>(<a class="code" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, <span class="keyword">struct</span> <a class="code" href="structlms__audio__info.html">lms_audio_info</a> *info)
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 int64_t album_id, genre_id, artist_id;
+<a name="l00697"></a>00697 <span class="keywordtype">int</span> ret_album, ret_genre, ret_artist;
+<a name="l00698"></a>00698
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (!lda)
+<a name="l00700"></a>00700 <span class="keywordflow">return</span> -1;
+<a name="l00701"></a>00701 <span class="keywordflow">if</span> (!info)
+<a name="l00702"></a>00702 <span class="keywordflow">return</span> -2;
+<a name="l00703"></a>00703 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a> < 1)
+<a name="l00704"></a>00704 <span class="keywordflow">return</span> -3;
+<a name="l00705"></a>00705
+<a name="l00706"></a>00706 ret_artist = _db_insert_artist(lda, info, &artist_id);
+<a name="l00707"></a>00707 <span class="keywordflow">if</span> (ret_artist < 0)
+<a name="l00708"></a>00708 <span class="keywordflow">return</span> -4;
+<a name="l00709"></a>00709
+<a name="l00710"></a>00710 ret_album = _db_insert_album(lda, info, &album_id,
+<a name="l00711"></a>00711 (ret_artist == 0) ? &artist_id : NULL);
+<a name="l00712"></a>00712 <span class="keywordflow">if</span> (ret_album < 0)
+<a name="l00713"></a>00713 <span class="keywordflow">return</span> -5;
+<a name="l00714"></a>00714
+<a name="l00715"></a>00715 ret_genre = _db_insert_genre(lda, info, &genre_id);
+<a name="l00716"></a>00716 <span class="keywordflow">if</span> (ret_genre < 0)
+<a name="l00717"></a>00717 <span class="keywordflow">return</span> -6;
+<a name="l00718"></a>00718
+<a name="l00719"></a>00719 <span class="keywordflow">return</span> _db_insert_audio(lda, info,
+<a name="l00720"></a>00720 (ret_album == 0) ? &album_id : NULL,
+<a name="l00721"></a>00721 (ret_artist == 0) ? &artist_id : NULL,
+<a name="l00722"></a>00722 (ret_genre == 0) ? &genre_id : NULL);
+<a name="l00723"></a>00723 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_audio.c File Reference</h1><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<code>#include <stdlib.h></code><br>
<code>#include <stdio.h></code><br>
<p>
-Include dependency graph for lightmediascanner_db_audio.c:<p><center><img src="lightmediascanner__db__audio_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_audio.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_audio.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__audio_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_audio.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_audio.c_map">
-<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="297,107,447,133"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="276,56,468,83"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="519,107,687,133"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="524,157,681,184"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="776,107,904,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="737,157,943,184"></map>
+<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265"></map>
+</div>
<p>
<a href="lightmediascanner__db__audio_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<td class="paramtype">array </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"> lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</td>
+ <td> lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00204">204</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00254">254</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00648">648</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db_8h-source.html#l00087">lms_audio_info::id</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00694">694</a> of file <a class="el" href="lightmediascanner__db__audio_8c-source.html">lightmediascanner_db_audio.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00087">lms_audio_info::id</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:54 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="297,107,447,133">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="276,56,468,83">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="519,107,687,133">
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="524,157,681,184">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="776,107,904,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="737,157,943,184">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265">
-4c77f05e70422b3473612da15f99cfc5
\ No newline at end of file
+fba223fd34d103f160fb0e5fe2521392
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_db_common.c</h1><a href="lightmediascanner__db__common_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <string.h></span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003009</span>
-<a name="l00007"></a>00007 <span class="preprocessor"></span><span class="keywordtype">int</span>
-<a name="l00008"></a><a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">00008</a> <a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql, <span class="keywordtype">int</span> len, sqlite3_stmt **stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> **tail)
-<a name="l00009"></a>00009 {
-<a name="l00010"></a>00010 <span class="keywordflow">return</span> sqlite3_prepare(db, sql, len, stmt, tail);
-<a name="l00011"></a>00011 }
-<a name="l00012"></a>00012 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003009 */</span>
-<a name="l00013"></a>00013
-<a name="l00014"></a>00014 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003007</span>
-<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="keywordtype">int</span>
-<a name="l00016"></a><a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">00016</a> <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(sqlite3_stmt *stmt)
-<a name="l00017"></a>00017 {
-<a name="l00018"></a>00018 <span class="keywordtype">int</span> i, last;
-<a name="l00019"></a>00019 <span class="keywordtype">int</span> rc;
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 rc = SQLITE_OK;
-<a name="l00022"></a>00022 last = sqlite3_bind_parameter_count(stmt);
-<a name="l00023"></a>00023 <span class="keywordflow">for</span>(i = 1; rc == SQLITE_OK && i <= last; i++) {
-<a name="l00024"></a>00024 rc = sqlite3_bind_null(stmt, i);
-<a name="l00025"></a>00025 }
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> rc;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a>00028 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003007 */</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003008</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="comment">/* Until 3.3.8 it doesn't support CREATE TRIGGER IF NOT EXISTS, so</span>
-<a name="l00032"></a>00032 <span class="comment"> * just ignore errors :-(</span>
-<a name="l00033"></a>00033 <span class="comment"> */</span>
-<a name="l00034"></a>00034 <span class="keywordtype">int</span>
-<a name="l00035"></a><a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">00035</a> <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keywordtype">char</span> *errmsg, *query;
-<a name="l00038"></a>00038 <span class="keywordtype">int</span> r, sql_len, prefix_len;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER "</span>) - 1;
-<a name="l00041"></a>00041 sql_len = strlen(sql);
-<a name="l00042"></a>00042 query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!query)
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> -1;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 memcpy(query, <span class="stringliteral">"CREATE TRIGGER "</span>, prefix_len);
-<a name="l00047"></a>00047 memcpy(query + prefix_len, sql, sql_len + 1);
-<a name="l00048"></a>00048 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
-<a name="l00049"></a>00049 free(query);
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (r != SQLITE_OK)
-<a name="l00051"></a>00051 sqlite3_free(errmsg);
-<a name="l00052"></a>00052 <span class="keywordflow">return</span> 0;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054 <span class="preprocessor">#else </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003008 */</span>
-<a name="l00055"></a>00055 <span class="keywordtype">int</span>
-<a name="l00056"></a>00056 <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="keywordtype">char</span> *errmsg, *query;
-<a name="l00059"></a>00059 <span class="keywordtype">int</span> r, sql_len, prefix_len;
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>) - 1;
-<a name="l00062"></a>00062 sql_len = strlen(sql);
-<a name="l00063"></a>00063 query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (!query)
-<a name="l00065"></a>00065 <span class="keywordflow">return</span> -1;
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 memcpy(query, <span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>, prefix_len);
-<a name="l00068"></a>00068 memcpy(query + prefix_len, sql, sql_len + 1);
-<a name="l00069"></a>00069 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
-<a name="l00070"></a>00070 free(query);
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00072"></a>00072 fprintf(stderr, <span class="stringliteral">"ERROR: could not create trigger: %s\n"</span>, errmsg);
-<a name="l00073"></a>00073 sqlite3_free(errmsg);
-<a name="l00074"></a>00074 <span class="keywordflow">return</span> -2;
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> 0;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003008 */</span>
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 sqlite3_stmt *
-<a name="l00081"></a><a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">00081</a> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 sqlite3_stmt *stmt;
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(db, sql, -1, &stmt, NULL) != SQLITE_OK)
-<a name="l00086"></a>00086 fprintf(stderr, <span class="stringliteral">"ERROR: could not prepare \"%s\": %s\n"</span>, sql,
-<a name="l00087"></a>00087 sqlite3_errmsg(db));
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> stmt;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="keywordtype">int</span>
-<a name="l00093"></a><a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">00093</a> <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 <span class="keywordtype">int</span> r;
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 r = sqlite3_finalize(stmt);
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00099"></a>00099 fprintf(stderr, <span class="stringliteral">"ERROR: could not finalize %s statement: #%d\n"</span>,
-<a name="l00100"></a>00100 name, r);
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> -1;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> 0;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordtype">int</span>
-<a name="l00108"></a><a class="code" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">00108</a> <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(sqlite3_stmt *stmt)
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordtype">int</span> r, ret;
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_db_common.c</h1><a href="lightmediascanner__db__common_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <string.h></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003009</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keywordtype">int</span>
+<a name="l00028"></a><a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">00028</a> <a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql, <span class="keywordtype">int</span> len, sqlite3_stmt **stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> **tail)
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030 <span class="keywordflow">return</span> sqlite3_prepare(db, sql, len, stmt, tail);
+<a name="l00031"></a>00031 }
+<a name="l00032"></a>00032 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003009 */</span>
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003007</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="keywordtype">int</span>
+<a name="l00036"></a><a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">00036</a> <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(sqlite3_stmt *stmt)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> i, last;
+<a name="l00039"></a>00039 <span class="keywordtype">int</span> rc;
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 rc = SQLITE_OK;
+<a name="l00042"></a>00042 last = sqlite3_bind_parameter_count(stmt);
+<a name="l00043"></a>00043 <span class="keywordflow">for</span>(i = 1; rc == SQLITE_OK && i <= last; i++) {
+<a name="l00044"></a>00044 rc = sqlite3_bind_null(stmt, i);
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 <span class="keywordflow">return</span> rc;
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003007 */</span>
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="preprocessor">#if SQLITE_VERSION_NUMBER < 3003008</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="comment">/* Until 3.3.8 it doesn't support CREATE TRIGGER IF NOT EXISTS, so</span>
+<a name="l00052"></a>00052 <span class="comment"> * just ignore errors :-(</span>
+<a name="l00053"></a>00053 <span class="comment"> */</span>
+<a name="l00054"></a>00054 <span class="keywordtype">int</span>
+<a name="l00055"></a><a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">00055</a> <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keywordtype">char</span> *errmsg, *query;
+<a name="l00058"></a>00058 <span class="keywordtype">int</span> r, sql_len, prefix_len;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER "</span>) - 1;
+<a name="l00061"></a>00061 sql_len = strlen(sql);
+<a name="l00062"></a>00062 query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (!query)
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> -1;
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 memcpy(query, <span class="stringliteral">"CREATE TRIGGER "</span>, prefix_len);
+<a name="l00067"></a>00067 memcpy(query + prefix_len, sql, sql_len + 1);
+<a name="l00068"></a>00068 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
+<a name="l00069"></a>00069 free(query);
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00071"></a>00071 sqlite3_free(errmsg);
+<a name="l00072"></a>00072 <span class="keywordflow">return</span> 0;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 <span class="preprocessor">#else </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003008 */</span>
+<a name="l00075"></a>00075 <span class="keywordtype">int</span>
+<a name="l00076"></a>00076 <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordtype">char</span> *errmsg, *query;
+<a name="l00079"></a>00079 <span class="keywordtype">int</span> r, sql_len, prefix_len;
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 prefix_len = <span class="keyword">sizeof</span>(<span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>) - 1;
+<a name="l00082"></a>00082 sql_len = strlen(sql);
+<a name="l00083"></a>00083 query = malloc((prefix_len + sql_len + 1) * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (!query)
+<a name="l00085"></a>00085 <span class="keywordflow">return</span> -1;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 memcpy(query, <span class="stringliteral">"CREATE TRIGGER IF NOT EXISTS "</span>, prefix_len);
+<a name="l00088"></a>00088 memcpy(query + prefix_len, sql, sql_len + 1);
+<a name="l00089"></a>00089 r = sqlite3_exec(db, query, NULL, NULL, &errmsg);
+<a name="l00090"></a>00090 free(query);
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00092"></a>00092 fprintf(stderr, <span class="stringliteral">"ERROR: could not create trigger: %s\n"</span>, errmsg);
+<a name="l00093"></a>00093 sqlite3_free(errmsg);
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> -2;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> 0;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 <span class="preprocessor">#endif </span><span class="comment">/* SQLITE_VERSION_NUMBER < 3003008 */</span>
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 sqlite3_stmt *
+<a name="l00101"></a><a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">00101</a> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *sql)
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 sqlite3_stmt *stmt;
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a>(db, sql, -1, &stmt, NULL) != SQLITE_OK)
+<a name="l00106"></a>00106 fprintf(stderr, <span class="stringliteral">"ERROR: could not prepare \"%s\": %s\n"</span>, sql,
+<a name="l00107"></a>00107 sqlite3_errmsg(db));
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> stmt;
+<a name="l00110"></a>00110 }
<a name="l00111"></a>00111
-<a name="l00112"></a>00112 ret = r = sqlite3_reset(stmt);
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (r != SQLITE_OK)
-<a name="l00114"></a>00114 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: #%d\n"</span>, r);
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 r = <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(stmt);
-<a name="l00117"></a>00117 ret += r;
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (r != SQLITE_OK)
-<a name="l00119"></a>00119 fprintf(stderr, <span class="stringliteral">"ERROR: could not clear SQL: #%d\n"</span>, r);
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> ret;
-<a name="l00122"></a>00122 }
+<a name="l00112"></a>00112 <span class="keywordtype">int</span>
+<a name="l00113"></a><a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">00113</a> <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keywordtype">int</span> r;
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 r = sqlite3_finalize(stmt);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00119"></a>00119 fprintf(stderr, <span class="stringliteral">"ERROR: could not finalize %s statement: #%d\n"</span>,
+<a name="l00120"></a>00120 name, r);
+<a name="l00121"></a>00121 <span class="keywordflow">return</span> -1;
+<a name="l00122"></a>00122 }
<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keywordtype">int</span>
-<a name="l00125"></a><a class="code" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">00125</a> <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">char</span> *text, <span class="keywordtype">int</span> len)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordtype">int</span> r;
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (text)
-<a name="l00130"></a>00130 r = sqlite3_bind_text(stmt, col, text, len, SQLITE_STATIC);
-<a name="l00131"></a>00131 <span class="keywordflow">else</span>
-<a name="l00132"></a>00132 r = sqlite3_bind_null(stmt, col);
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> 0;
-<a name="l00136"></a>00136 <span class="keywordflow">else</span> {
-<a name="l00137"></a>00137 sqlite3 *db;
-<a name="l00138"></a>00138 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 db = sqlite3_db_handle(stmt);
-<a name="l00141"></a>00141 err = sqlite3_errmsg(db);
-<a name="l00142"></a>00142 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00143"></a>00143 <span class="keywordflow">return</span> -col;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordtype">int</span>
-<a name="l00148"></a><a class="code" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">00148</a> <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">void</span> *blob, <span class="keywordtype">int</span> len)
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 <span class="keywordtype">int</span> r;
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (blob)
-<a name="l00153"></a>00153 r = sqlite3_bind_blob(stmt, col, blob, len, SQLITE_STATIC);
-<a name="l00154"></a>00154 <span class="keywordflow">else</span>
-<a name="l00155"></a>00155 r = sqlite3_bind_null(stmt, col);
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> 0;
-<a name="l00159"></a>00159 <span class="keywordflow">else</span> {
-<a name="l00160"></a>00160 sqlite3 *db;
-<a name="l00161"></a>00161 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 db = sqlite3_db_handle(stmt);
-<a name="l00164"></a>00164 err = sqlite3_errmsg(db);
-<a name="l00165"></a>00165 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00166"></a>00166 <span class="keywordflow">return</span> -col;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keywordtype">int</span>
-<a name="l00171"></a><a class="code" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">00171</a> <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t value)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <span class="keywordtype">int</span> r;
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 r = sqlite3_bind_int64(stmt, col, value);
-<a name="l00176"></a>00176 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> 0;
-<a name="l00178"></a>00178 <span class="keywordflow">else</span> {
-<a name="l00179"></a>00179 sqlite3 *db;
-<a name="l00180"></a>00180 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 db = sqlite3_db_handle(stmt);
-<a name="l00183"></a>00183 err = sqlite3_errmsg(db);
-<a name="l00184"></a>00184 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00185"></a>00185 <span class="keywordflow">return</span> -col;
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keywordtype">int</span>
-<a name="l00190"></a><a class="code" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">00190</a> <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t *p_value)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 <span class="keywordtype">int</span> r;
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (p_value)
-<a name="l00195"></a>00195 r = sqlite3_bind_int64(stmt, col, *p_value);
-<a name="l00196"></a>00196 <span class="keywordflow">else</span>
-<a name="l00197"></a>00197 r = sqlite3_bind_null(stmt, col);
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
-<a name="l00200"></a>00200 <span class="keywordflow">else</span> {
-<a name="l00201"></a>00201 sqlite3 *db;
-<a name="l00202"></a>00202 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 db = sqlite3_db_handle(stmt);
-<a name="l00205"></a>00205 err = sqlite3_errmsg(db);
-<a name="l00206"></a>00206 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00207"></a>00207 <span class="keywordflow">return</span> -col;
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="keywordtype">int</span>
-<a name="l00212"></a><a class="code" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">00212</a> <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> value)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordtype">int</span> r;
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 r = sqlite3_bind_int(stmt, col, value);
-<a name="l00217"></a>00217 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00218"></a>00218 <span class="keywordflow">return</span> 0;
-<a name="l00219"></a>00219 <span class="keywordflow">else</span> {
-<a name="l00220"></a>00220 sqlite3 *db;
-<a name="l00221"></a>00221 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 db = sqlite3_db_handle(stmt);
-<a name="l00224"></a>00224 err = sqlite3_errmsg(db);
-<a name="l00225"></a>00225 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00226"></a>00226 <span class="keywordflow">return</span> -col;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229
-<a name="l00230"></a>00230 <span class="keywordtype">int</span>
-<a name="l00231"></a><a class="code" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">00231</a> <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> value)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <span class="keywordtype">int</span> r;
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 r = sqlite3_bind_double(stmt, col, value);
-<a name="l00236"></a>00236 <span class="keywordflow">if</span> (r == SQLITE_OK)
-<a name="l00237"></a>00237 <span class="keywordflow">return</span> 0;
-<a name="l00238"></a>00238 <span class="keywordflow">else</span> {
-<a name="l00239"></a>00239 sqlite3 *db;
-<a name="l00240"></a>00240 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 db = sqlite3_db_handle(stmt);
-<a name="l00243"></a>00243 err = sqlite3_errmsg(db);
-<a name="l00244"></a>00244 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> -col;
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 <span class="keywordtype">int</span>
-<a name="l00250"></a><a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">00250</a> <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 <span class="keywordtype">int</span> r, version;
-<a name="l00253"></a>00253 sqlite3_stmt *stmt;
+<a name="l00124"></a>00124 <span class="keywordflow">return</span> 0;
+<a name="l00125"></a>00125 }
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keywordtype">int</span>
+<a name="l00128"></a><a class="code" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">00128</a> <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(sqlite3_stmt *stmt)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keywordtype">int</span> r, ret;
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 ret = r = sqlite3_reset(stmt);
+<a name="l00133"></a>00133 <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00134"></a>00134 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: #%d\n"</span>, r);
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 r = <a class="code" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a>(stmt);
+<a name="l00137"></a>00137 ret += r;
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00139"></a>00139 fprintf(stderr, <span class="stringliteral">"ERROR: could not clear SQL: #%d\n"</span>, r);
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="keywordflow">return</span> ret;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keywordtype">int</span>
+<a name="l00145"></a><a class="code" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">00145</a> <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">char</span> *text, <span class="keywordtype">int</span> len)
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordtype">int</span> r;
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="keywordflow">if</span> (text)
+<a name="l00150"></a>00150 r = sqlite3_bind_text(stmt, col, text, len, SQLITE_STATIC);
+<a name="l00151"></a>00151 <span class="keywordflow">else</span>
+<a name="l00152"></a>00152 r = sqlite3_bind_null(stmt, col);
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00155"></a>00155 <span class="keywordflow">return</span> 0;
+<a name="l00156"></a>00156 <span class="keywordflow">else</span> {
+<a name="l00157"></a>00157 sqlite3 *db;
+<a name="l00158"></a>00158 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 db = sqlite3_db_handle(stmt);
+<a name="l00161"></a>00161 err = sqlite3_errmsg(db);
+<a name="l00162"></a>00162 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> -col;
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keywordtype">int</span>
+<a name="l00168"></a><a class="code" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">00168</a> <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keyword">const</span> <span class="keywordtype">void</span> *blob, <span class="keywordtype">int</span> len)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <span class="keywordtype">int</span> r;
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="keywordflow">if</span> (blob)
+<a name="l00173"></a>00173 r = sqlite3_bind_blob(stmt, col, blob, len, SQLITE_STATIC);
+<a name="l00174"></a>00174 <span class="keywordflow">else</span>
+<a name="l00175"></a>00175 r = sqlite3_bind_null(stmt, col);
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> 0;
+<a name="l00179"></a>00179 <span class="keywordflow">else</span> {
+<a name="l00180"></a>00180 sqlite3 *db;
+<a name="l00181"></a>00181 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 db = sqlite3_db_handle(stmt);
+<a name="l00184"></a>00184 err = sqlite3_errmsg(db);
+<a name="l00185"></a>00185 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00186"></a>00186 <span class="keywordflow">return</span> -col;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="keywordtype">int</span>
+<a name="l00191"></a><a class="code" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">00191</a> <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t value)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keywordtype">int</span> r;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 r = sqlite3_bind_int64(stmt, col, value);
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> 0;
+<a name="l00198"></a>00198 <span class="keywordflow">else</span> {
+<a name="l00199"></a>00199 sqlite3 *db;
+<a name="l00200"></a>00200 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 db = sqlite3_db_handle(stmt);
+<a name="l00203"></a>00203 err = sqlite3_errmsg(db);
+<a name="l00204"></a>00204 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00205"></a>00205 <span class="keywordflow">return</span> -col;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 }
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209 <span class="keywordtype">int</span>
+<a name="l00210"></a><a class="code" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">00210</a> <a class="code" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, int64_t *p_value)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keywordtype">int</span> r;
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="keywordflow">if</span> (p_value)
+<a name="l00215"></a>00215 r = sqlite3_bind_int64(stmt, col, *p_value);
+<a name="l00216"></a>00216 <span class="keywordflow">else</span>
+<a name="l00217"></a>00217 r = sqlite3_bind_null(stmt, col);
+<a name="l00218"></a>00218 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00219"></a>00219 <span class="keywordflow">return</span> 0;
+<a name="l00220"></a>00220 <span class="keywordflow">else</span> {
+<a name="l00221"></a>00221 sqlite3 *db;
+<a name="l00222"></a>00222 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 db = sqlite3_db_handle(stmt);
+<a name="l00225"></a>00225 err = sqlite3_errmsg(db);
+<a name="l00226"></a>00226 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00227"></a>00227 <span class="keywordflow">return</span> -col;
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 }
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keywordtype">int</span>
+<a name="l00232"></a><a class="code" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">00232</a> <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">int</span> value)
+<a name="l00233"></a>00233 {
+<a name="l00234"></a>00234 <span class="keywordtype">int</span> r;
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 r = sqlite3_bind_int(stmt, col, value);
+<a name="l00237"></a>00237 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00238"></a>00238 <span class="keywordflow">return</span> 0;
+<a name="l00239"></a>00239 <span class="keywordflow">else</span> {
+<a name="l00240"></a>00240 sqlite3 *db;
+<a name="l00241"></a>00241 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 db = sqlite3_db_handle(stmt);
+<a name="l00244"></a>00244 err = sqlite3_errmsg(db);
+<a name="l00245"></a>00245 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00246"></a>00246 <span class="keywordflow">return</span> -col;
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="keywordtype">int</span>
+<a name="l00251"></a><a class="code" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">00251</a> <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(sqlite3_stmt *stmt, <span class="keywordtype">int</span> col, <span class="keywordtype">double</span> value)
+<a name="l00252"></a>00252 {
+<a name="l00253"></a>00253 <span class="keywordtype">int</span> r;
<a name="l00254"></a>00254
-<a name="l00255"></a>00255 stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00256"></a>00256 <span class="stringliteral">"SELECT version FROM lms_internal WHERE tab = ?"</span>);
-<a name="l00257"></a>00257 <span class="keywordflow">if</span> (!stmt)
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> -1;
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1) != 0) {
-<a name="l00261"></a>00261 version = -1;
-<a name="l00262"></a>00262 <span class="keywordflow">goto</span> done;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 r = sqlite3_step(stmt);
-<a name="l00266"></a>00266 <span class="keywordflow">if</span> (r == SQLITE_DONE)
-<a name="l00267"></a>00267 version = 0;
-<a name="l00268"></a>00268 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == SQLITE_ROW)
-<a name="l00269"></a>00269 version = sqlite3_column_int(stmt, 1);
-<a name="l00270"></a>00270 <span class="keywordflow">else</span> {
-<a name="l00271"></a>00271 version = -1;
-<a name="l00272"></a>00272 fprintf(stderr, <span class="stringliteral">"ERROR: could not get table '%s' version: %s\n"</span>,
-<a name="l00273"></a>00273 table, sqlite3_errmsg(db));
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 done:
-<a name="l00277"></a>00277 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00278"></a>00278 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_get"</span>);
+<a name="l00255"></a>00255 r = sqlite3_bind_double(stmt, col, value);
+<a name="l00256"></a>00256 <span class="keywordflow">if</span> (r == SQLITE_OK)
+<a name="l00257"></a>00257 <span class="keywordflow">return</span> 0;
+<a name="l00258"></a>00258 <span class="keywordflow">else</span> {
+<a name="l00259"></a>00259 sqlite3 *db;
+<a name="l00260"></a>00260 <span class="keyword">const</span> <span class="keywordtype">char</span> *err;
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 db = sqlite3_db_handle(stmt);
+<a name="l00263"></a>00263 err = sqlite3_errmsg(db);
+<a name="l00264"></a>00264 fprintf(stderr, <span class="stringliteral">"ERROR: could not bind SQL value %d: %s\n"</span>, col, err);
+<a name="l00265"></a>00265 <span class="keywordflow">return</span> -col;
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 }
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <span class="keywordtype">int</span>
+<a name="l00270"></a><a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">00270</a> <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272 <span class="keywordtype">int</span> r, version;
+<a name="l00273"></a>00273 sqlite3_stmt *stmt;
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00276"></a>00276 <span class="stringliteral">"SELECT version FROM lms_internal WHERE tab = ?"</span>);
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (!stmt)
+<a name="l00278"></a>00278 <span class="keywordflow">return</span> -1;
<a name="l00279"></a>00279
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> version;
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 <span class="keywordtype">int</span>
-<a name="l00284"></a><a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">00284</a> <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version)
-<a name="l00285"></a>00285 {
-<a name="l00286"></a>00286 <span class="keywordtype">int</span> r, ret;
-<a name="l00287"></a>00287 sqlite3_stmt *stmt;
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289 stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00290"></a>00290 <span class="stringliteral">"INSERT OR REPLACE INTO lms_internal (tab, version) VALUES (?, ?)"</span>);
-<a name="l00291"></a>00291 <span class="keywordflow">if</span> (!stmt)
-<a name="l00292"></a>00292 <span class="keywordflow">return</span> -1;
-<a name="l00293"></a>00293
-<a name="l00294"></a>00294 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1);
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00296"></a>00296 <span class="keywordflow">goto</span> done;
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, version);
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00300"></a>00300 <span class="keywordflow">goto</span> done;
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 r = sqlite3_step(stmt);
-<a name="l00303"></a>00303 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00304"></a>00304 ret = -1;
-<a name="l00305"></a>00305 fprintf(stderr, <span class="stringliteral">"ERROR: could not set table '%s' version: %s\n"</span>,
-<a name="l00306"></a>00306 table, sqlite3_errmsg(db));
-<a name="l00307"></a>00307 }
+<a name="l00280"></a>00280 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1) != 0) {
+<a name="l00281"></a>00281 version = -1;
+<a name="l00282"></a>00282 <span class="keywordflow">goto</span> done;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 r = sqlite3_step(stmt);
+<a name="l00286"></a>00286 <span class="keywordflow">if</span> (r == SQLITE_DONE)
+<a name="l00287"></a>00287 version = 0;
+<a name="l00288"></a>00288 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == SQLITE_ROW)
+<a name="l00289"></a>00289 version = sqlite3_column_int(stmt, 0);
+<a name="l00290"></a>00290 <span class="keywordflow">else</span> {
+<a name="l00291"></a>00291 version = -1;
+<a name="l00292"></a>00292 fprintf(stderr, <span class="stringliteral">"ERROR: could not get table '%s' version: %s\n"</span>,
+<a name="l00293"></a>00293 table, sqlite3_errmsg(db));
+<a name="l00294"></a>00294 }
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 done:
+<a name="l00297"></a>00297 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00298"></a>00298 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_get"</span>);
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="keywordflow">return</span> version;
+<a name="l00301"></a>00301 }
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keywordtype">int</span>
+<a name="l00304"></a><a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">00304</a> <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version)
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 <span class="keywordtype">int</span> r, ret;
+<a name="l00307"></a>00307 sqlite3_stmt *stmt;
<a name="l00308"></a>00308
-<a name="l00309"></a>00309 done:
-<a name="l00310"></a>00310 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00311"></a>00311 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_set"</span>);
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313 <span class="keywordflow">return</span> ret;
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316 <span class="keywordtype">int</span>
-<a name="l00317"></a><a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">00317</a> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="keywordflow">if</span> (current_version == last_version)
-<a name="l00320"></a>00320 <span class="keywordflow">return</span> 0;
-<a name="l00321"></a>00321 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_version > last_version) {
-<a name="l00322"></a>00322 fprintf(stderr,
-<a name="l00323"></a>00323 <span class="stringliteral">"WARNING: current version (%d) of table '%s' is greater than "</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"last known version (%d), no updates will be made.\n"</span>,
-<a name="l00325"></a>00325 current_version, table, last_version);
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> 0;
+<a name="l00309"></a>00309 stmt = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00310"></a>00310 <span class="stringliteral">"INSERT OR REPLACE INTO lms_internal (tab, version) VALUES (?, ?)"</span>);
+<a name="l00311"></a>00311 <span class="keywordflow">if</span> (!stmt)
+<a name="l00312"></a>00312 <span class="keywordflow">return</span> -1;
+<a name="l00313"></a>00313
+<a name="l00314"></a>00314 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 1, table, -1);
+<a name="l00315"></a>00315 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00316"></a>00316 <span class="keywordflow">goto</span> done;
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, version);
+<a name="l00319"></a>00319 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00320"></a>00320 <span class="keywordflow">goto</span> done;
+<a name="l00321"></a>00321
+<a name="l00322"></a>00322 r = sqlite3_step(stmt);
+<a name="l00323"></a>00323 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00324"></a>00324 ret = -1;
+<a name="l00325"></a>00325 fprintf(stderr, <span class="stringliteral">"ERROR: could not set table '%s' version: %s\n"</span>,
+<a name="l00326"></a>00326 table, sqlite3_errmsg(db));
<a name="l00327"></a>00327 }
<a name="l00328"></a>00328
-<a name="l00329"></a>00329 <span class="keywordflow">for</span> (; current_version < last_version; current_version++) {
-<a name="l00330"></a>00330 <span class="keywordtype">int</span> r, is_last_run;
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332 is_last_run = current_version == (last_version - 1);
-<a name="l00333"></a>00333 r = updaters[current_version](db, table, current_version, is_last_run);
-<a name="l00334"></a>00334 <span class="keywordflow">if</span> (r != 0) {
-<a name="l00335"></a>00335 fprintf(stderr,
-<a name="l00336"></a>00336 <span class="stringliteral">"ERROR: could not update table '%s' from version %d->%d\n"</span>,
-<a name="l00337"></a>00337 table, current_version, current_version + 1);
-<a name="l00338"></a>00338 <span class="keywordflow">return</span> r;
-<a name="l00339"></a>00339 }
-<a name="l00340"></a>00340 <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(db, table, current_version + 1);
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> 0;
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 <span class="keywordtype">int</span>
-<a name="l00347"></a><a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">00347</a> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters)
-<a name="l00348"></a>00348 {
-<a name="l00349"></a>00349 <span class="keywordtype">int</span> current_version;
-<a name="l00350"></a>00350
-<a name="l00351"></a>00351 current_version = <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(db, table);
-<a name="l00352"></a>00352 <span class="keywordflow">if</span> (current_version < 0)
-<a name="l00353"></a>00353 <span class="keywordflow">return</span> -1;
-<a name="l00354"></a>00354 <span class="keywordflow">else</span>
-<a name="l00355"></a>00355 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(db, table, current_version, last_version,
-<a name="l00356"></a>00356 updaters);
-<a name="l00357"></a>00357 }
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00360"></a>00360 lms_db_cache_find_db(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db)
-<a name="l00361"></a>00361 {
-<a name="l00362"></a>00362 <span class="keywordtype">int</span> i;
-<a name="l00363"></a>00363
-<a name="l00364"></a>00364 <span class="keywordflow">for</span> (i = 0; i < cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>; i++)
-<a name="l00365"></a>00365 <span class="keywordflow">if</span> (cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[i].<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> == db)
-<a name="l00366"></a>00366 <span class="keywordflow">return</span> i;
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <span class="keywordflow">return</span> -1;
-<a name="l00369"></a>00369 }
+<a name="l00329"></a>00329 done:
+<a name="l00330"></a>00330 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00331"></a>00331 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(stmt, <span class="stringliteral">"table_version_set"</span>);
+<a name="l00332"></a>00332
+<a name="l00333"></a>00333 <span class="keywordflow">return</span> ret;
+<a name="l00334"></a>00334 }
+<a name="l00335"></a>00335
+<a name="l00336"></a>00336 <span class="keywordtype">int</span>
+<a name="l00337"></a><a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">00337</a> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <span class="keywordflow">if</span> (current_version == last_version)
+<a name="l00340"></a>00340 <span class="keywordflow">return</span> 0;
+<a name="l00341"></a>00341 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_version > last_version) {
+<a name="l00342"></a>00342 fprintf(stderr,
+<a name="l00343"></a>00343 <span class="stringliteral">"WARNING: current version (%d) of table '%s' is greater than "</span>
+<a name="l00344"></a>00344 <span class="stringliteral">"last known version (%d), no updates will be made.\n"</span>,
+<a name="l00345"></a>00345 current_version, table, last_version);
+<a name="l00346"></a>00346 <span class="keywordflow">return</span> 0;
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348
+<a name="l00349"></a>00349 <span class="keywordflow">for</span> (; current_version < last_version; current_version++) {
+<a name="l00350"></a>00350 <span class="keywordtype">int</span> r, is_last_run;
+<a name="l00351"></a>00351
+<a name="l00352"></a>00352 is_last_run = current_version == (last_version - 1);
+<a name="l00353"></a>00353 r = updaters[current_version](db, table, current_version, is_last_run);
+<a name="l00354"></a>00354 <span class="keywordflow">if</span> (r != 0) {
+<a name="l00355"></a>00355 fprintf(stderr,
+<a name="l00356"></a>00356 <span class="stringliteral">"ERROR: could not update table '%s' from version %d->%d\n"</span>,
+<a name="l00357"></a>00357 table, current_version, current_version + 1);
+<a name="l00358"></a>00358 <span class="keywordflow">return</span> r;
+<a name="l00359"></a>00359 }
+<a name="l00360"></a>00360 <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(db, table, current_version + 1);
+<a name="l00361"></a>00361 }
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364 }
+<a name="l00365"></a>00365
+<a name="l00366"></a>00366 <span class="keywordtype">int</span>
+<a name="l00367"></a><a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">00367</a> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)
+<a name="l00368"></a>00368 {
+<a name="l00369"></a>00369 <span class="keywordtype">int</span> current_version;
<a name="l00370"></a>00370
-<a name="l00371"></a>00371 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00372"></a>00372 lms_db_cache_resize(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keywordtype">int</span> new_size)
-<a name="l00373"></a>00373 {
-<a name="l00374"></a>00374 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = new_size;
-<a name="l00375"></a>00375 cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> = realloc(cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>,
-<a name="l00376"></a>00376 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> * <span class="keyword">sizeof</span>(*cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>));
-<a name="l00377"></a>00377 <span class="keywordflow">if</span> (cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> && !cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>) {
-<a name="l00378"></a>00378 perror(<span class="stringliteral">"realloc"</span>);
-<a name="l00379"></a>00379 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = 0;
-<a name="l00380"></a>00380 <span class="keywordflow">return</span> -1;
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 <span class="keywordflow">return</span> 0;
-<a name="l00384"></a>00384 }
-<a name="l00385"></a>00385
-<a name="l00386"></a>00386 <span class="keywordtype">int</span>
-<a name="l00387"></a><a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">00387</a> <a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *data)
-<a name="l00388"></a>00388 {
-<a name="l00389"></a>00389 <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
-<a name="l00390"></a>00390 <span class="keywordtype">int</span> idx;
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 idx = lms_db_cache_find_db(cache, db);
-<a name="l00393"></a>00393 <span class="keywordflow">if</span> (idx >= 0) {
-<a name="l00394"></a>00394 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
-<a name="l00395"></a>00395 <span class="keywordflow">if</span> (e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> == data)
-<a name="l00396"></a>00396 <span class="keywordflow">return</span> 0;
-<a name="l00397"></a>00397 <span class="keywordflow">else</span> {
-<a name="l00398"></a>00398 fprintf(stderr,
-<a name="l00399"></a>00399 <span class="stringliteral">"ERROR: cache %p for db %p has another data registered"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">": %p (current is %p)\n"</span>, cache, db, e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, data);
-<a name="l00401"></a>00401 <span class="keywordflow">return</span> -1;
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 idx = cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>;
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (lms_db_cache_resize(cache, cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> + 1) != 0) {
-<a name="l00407"></a>00407 <span class="keywordflow">return</span> -2;
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
-<a name="l00411"></a>00411 e-><a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> = db;
-<a name="l00412"></a>00412 e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> = data;
-<a name="l00413"></a>00413 <span class="keywordflow">return</span> 0;
-<a name="l00414"></a>00414 }
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416 <span class="keywordtype">int</span>
-<a name="l00417"></a><a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">00417</a> <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>)
-<a name="l00418"></a>00418 {
-<a name="l00419"></a>00419 <span class="keywordtype">int</span> idx;
-<a name="l00420"></a>00420 <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
-<a name="l00421"></a>00421
-<a name="l00422"></a>00422 idx = lms_db_cache_find_db(cache, db);
-<a name="l00423"></a>00423 <span class="keywordflow">if</span> (idx < 0) {
-<a name="l00424"></a>00424 fprintf(stderr, <span class="stringliteral">"ERROR: no db %p found in cache %p\n"</span>, db, cache);
-<a name="l00425"></a>00425 <span class="keywordflow">return</span> -1;
-<a name="l00426"></a>00426 }
-<a name="l00427"></a>00427
-<a name="l00428"></a>00428 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
-<a name="l00429"></a>00429 <span class="keywordflow">if</span> (e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> != data) {
-<a name="l00430"></a>00430 fprintf(stderr, <span class="stringliteral">"ERROR: data mismatch in request to delete from cache: "</span>
-<a name="l00431"></a>00431 <span class="stringliteral">"want %p, has %p, cache %p, db %p\n"</span>, data, e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, cache, db);
-<a name="l00432"></a>00432 <span class="keywordflow">return</span> -2;
-<a name="l00433"></a>00433 }
-<a name="l00434"></a>00434
-<a name="l00435"></a>00435 <span class="keywordflow">for</span> (; idx < cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1; idx++)
-<a name="l00436"></a>00436 cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx] = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx + 1];
-<a name="l00437"></a>00437
-<a name="l00438"></a>00438 <span class="keywordflow">return</span> lms_db_cache_resize(cache, cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1);
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440
-<a name="l00441"></a>00441 <span class="keywordtype">int</span>
-<a name="l00442"></a><a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">00442</a> <a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> **pdata)
-<a name="l00443"></a>00443 {
-<a name="l00444"></a>00444 <span class="keywordtype">int</span> idx;
-<a name="l00445"></a>00445
-<a name="l00446"></a>00446 idx = lms_db_cache_find_db(cache, db);
-<a name="l00447"></a>00447 <span class="keywordflow">if</span> (idx < 0)
-<a name="l00448"></a>00448 <span class="keywordflow">return</span> -1;
-<a name="l00449"></a>00449
-<a name="l00450"></a>00450 *pdata = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx].<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>;
-<a name="l00451"></a>00451 <span class="keywordflow">return</span> 0;
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453
-<a name="l00454"></a>00454 <span class="keywordtype">int</span>
-<a name="l00455"></a><a class="code" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">00455</a> <a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(sqlite3 *db)
-<a name="l00456"></a>00456 {
-<a name="l00457"></a>00457 <span class="keywordtype">char</span> *errmsg;
-<a name="l00458"></a>00458 <span class="keywordtype">int</span> r;
-<a name="l00459"></a>00459
-<a name="l00460"></a>00460 errmsg = NULL;
-<a name="l00461"></a>00461 r = sqlite3_exec(db,
-<a name="l00462"></a>00462 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS lms_internal ("</span>
-<a name="l00463"></a>00463 <span class="stringliteral">"tab TEXT NOT NULL UNIQUE, "</span>
-<a name="l00464"></a>00464 <span class="stringliteral">"version INTEGER NOT NULL"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">")"</span>,
-<a name="l00466"></a>00466 NULL, NULL, &errmsg);
-<a name="l00467"></a>00467 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00468"></a>00468 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'lms_internal' table: %s\n"</span>,
-<a name="l00469"></a>00469 errmsg);
-<a name="l00470"></a>00470 sqlite3_free(errmsg);
-<a name="l00471"></a>00471 <span class="keywordflow">return</span> -1;
-<a name="l00472"></a>00472 }
+<a name="l00371"></a>00371 current_version = <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(db, table);
+<a name="l00372"></a>00372 <span class="keywordflow">if</span> (current_version < 0)
+<a name="l00373"></a>00373 <span class="keywordflow">return</span> -1;
+<a name="l00374"></a>00374 <span class="keywordflow">else</span>
+<a name="l00375"></a>00375 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(db, table, current_version, last_version,
+<a name="l00376"></a>00376 updaters);
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378
+<a name="l00379"></a>00379 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00380"></a>00380 lms_db_cache_find_db(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db)
+<a name="l00381"></a>00381 {
+<a name="l00382"></a>00382 <span class="keywordtype">int</span> i;
+<a name="l00383"></a>00383
+<a name="l00384"></a>00384 <span class="keywordflow">for</span> (i = 0; i < cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>; i++)
+<a name="l00385"></a>00385 <span class="keywordflow">if</span> (cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[i].<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> == db)
+<a name="l00386"></a>00386 <span class="keywordflow">return</span> i;
+<a name="l00387"></a>00387
+<a name="l00388"></a>00388 <span class="keywordflow">return</span> -1;
+<a name="l00389"></a>00389 }
+<a name="l00390"></a>00390
+<a name="l00391"></a>00391 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00392"></a>00392 lms_db_cache_resize(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keywordtype">int</span> new_size)
+<a name="l00393"></a>00393 {
+<a name="l00394"></a>00394 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = new_size;
+<a name="l00395"></a>00395 cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> = realloc(cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>,
+<a name="l00396"></a>00396 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> * <span class="keyword">sizeof</span>(*cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>));
+<a name="l00397"></a>00397 <span class="keywordflow">if</span> (cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> && !cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>) {
+<a name="l00398"></a>00398 perror(<span class="stringliteral">"realloc"</span>);
+<a name="l00399"></a>00399 cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = 0;
+<a name="l00400"></a>00400 <span class="keywordflow">return</span> -1;
+<a name="l00401"></a>00401 }
+<a name="l00402"></a>00402
+<a name="l00403"></a>00403 <span class="keywordflow">return</span> 0;
+<a name="l00404"></a>00404 }
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406 <span class="keywordtype">int</span>
+<a name="l00407"></a><a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">00407</a> <a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *data)
+<a name="l00408"></a>00408 {
+<a name="l00409"></a>00409 <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
+<a name="l00410"></a>00410 <span class="keywordtype">int</span> idx;
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 idx = lms_db_cache_find_db(cache, db);
+<a name="l00413"></a>00413 <span class="keywordflow">if</span> (idx >= 0) {
+<a name="l00414"></a>00414 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00415"></a>00415 <span class="keywordflow">if</span> (e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> == data)
+<a name="l00416"></a>00416 <span class="keywordflow">return</span> 0;
+<a name="l00417"></a>00417 <span class="keywordflow">else</span> {
+<a name="l00418"></a>00418 fprintf(stderr,
+<a name="l00419"></a>00419 <span class="stringliteral">"ERROR: cache %p for db %p has another data registered"</span>
+<a name="l00420"></a>00420 <span class="stringliteral">": %p (current is %p)\n"</span>, cache, db, e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, data);
+<a name="l00421"></a>00421 <span class="keywordflow">return</span> -1;
+<a name="l00422"></a>00422 }
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 idx = cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>;
+<a name="l00426"></a>00426 <span class="keywordflow">if</span> (lms_db_cache_resize(cache, cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> + 1) != 0) {
+<a name="l00427"></a>00427 <span class="keywordflow">return</span> -2;
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429
+<a name="l00430"></a>00430 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00431"></a>00431 e-><a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> = db;
+<a name="l00432"></a>00432 e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> = data;
+<a name="l00433"></a>00433 <span class="keywordflow">return</span> 0;
+<a name="l00434"></a>00434 }
+<a name="l00435"></a>00435
+<a name="l00436"></a>00436 <span class="keywordtype">int</span>
+<a name="l00437"></a><a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">00437</a> <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>)
+<a name="l00438"></a>00438 {
+<a name="l00439"></a>00439 <span class="keywordtype">int</span> idx;
+<a name="l00440"></a>00440 <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *e;
+<a name="l00441"></a>00441
+<a name="l00442"></a>00442 idx = lms_db_cache_find_db(cache, db);
+<a name="l00443"></a>00443 <span class="keywordflow">if</span> (idx < 0) {
+<a name="l00444"></a>00444 fprintf(stderr, <span class="stringliteral">"ERROR: no db %p found in cache %p\n"</span>, db, cache);
+<a name="l00445"></a>00445 <span class="keywordflow">return</span> -1;
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a>00448 e = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00449"></a>00449 <span class="keywordflow">if</span> (e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a> != data) {
+<a name="l00450"></a>00450 fprintf(stderr, <span class="stringliteral">"ERROR: data mismatch in request to delete from cache: "</span>
+<a name="l00451"></a>00451 <span class="stringliteral">"want %p, has %p, cache %p, db %p\n"</span>, data, e-><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>, cache, db);
+<a name="l00452"></a>00452 <span class="keywordflow">return</span> -2;
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454
+<a name="l00455"></a>00455 <span class="keywordflow">for</span> (; idx < cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1; idx++)
+<a name="l00456"></a>00456 cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx] = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx + 1];
+<a name="l00457"></a>00457
+<a name="l00458"></a>00458 <span class="keywordflow">return</span> lms_db_cache_resize(cache, cache-><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1);
+<a name="l00459"></a>00459 }
+<a name="l00460"></a>00460
+<a name="l00461"></a>00461 <span class="keywordtype">int</span>
+<a name="l00462"></a><a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">00462</a> <a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(<span class="keyword">struct</span> <a class="code" href="structlms__db__cache.html">lms_db_cache</a> *cache, <span class="keyword">const</span> sqlite3 *db, <span class="keywordtype">void</span> **pdata)
+<a name="l00463"></a>00463 {
+<a name="l00464"></a>00464 <span class="keywordtype">int</span> idx;
+<a name="l00465"></a>00465
+<a name="l00466"></a>00466 idx = lms_db_cache_find_db(cache, db);
+<a name="l00467"></a>00467 <span class="keywordflow">if</span> (idx < 0)
+<a name="l00468"></a>00468 <span class="keywordflow">return</span> -1;
+<a name="l00469"></a>00469
+<a name="l00470"></a>00470 *pdata = cache-><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx].<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>;
+<a name="l00471"></a>00471 <span class="keywordflow">return</span> 0;
+<a name="l00472"></a>00472 }
<a name="l00473"></a>00473
-<a name="l00474"></a>00474 r = sqlite3_exec(db,
-<a name="l00475"></a>00475 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS files ("</span>
-<a name="l00476"></a>00476 <span class="stringliteral">"id INTEGER PRIMARY KEY AUTOINCREMENT, "</span>
-<a name="l00477"></a>00477 <span class="stringliteral">"path BLOB NOT NULL UNIQUE, "</span>
-<a name="l00478"></a>00478 <span class="stringliteral">"mtime INTEGER NOT NULL, "</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"dtime INTEGER NOT NULL, "</span>
-<a name="l00480"></a>00480 <span class="stringliteral">"size INTEGER NOT NULL"</span>
-<a name="l00481"></a>00481 <span class="stringliteral">")"</span>,
-<a name="l00482"></a>00482 NULL, NULL, &errmsg);
-<a name="l00483"></a>00483 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00484"></a>00484 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files' table: %s\n"</span>, errmsg);
-<a name="l00485"></a>00485 sqlite3_free(errmsg);
-<a name="l00486"></a>00486 <span class="keywordflow">return</span> -2;
-<a name="l00487"></a>00487 }
-<a name="l00488"></a>00488
-<a name="l00489"></a>00489 r = sqlite3_exec(db,
-<a name="l00490"></a>00490 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS files_path_idx ON files ("</span>
-<a name="l00491"></a>00491 <span class="stringliteral">"path"</span>
-<a name="l00492"></a>00492 <span class="stringliteral">")"</span>,
-<a name="l00493"></a>00493 NULL, NULL, &errmsg);
-<a name="l00494"></a>00494 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00495"></a>00495 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files_path_idx' index: %s\n"</span>,
-<a name="l00496"></a>00496 errmsg);
-<a name="l00497"></a>00497 sqlite3_free(errmsg);
-<a name="l00498"></a>00498 <span class="keywordflow">return</span> -3;
-<a name="l00499"></a>00499 }
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 <span class="keywordflow">return</span> 0;
-<a name="l00502"></a>00502 }
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504
-<a name="l00505"></a>00505 sqlite3_stmt *
-<a name="l00506"></a><a class="code" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">00506</a> <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(sqlite3 *db)
-<a name="l00507"></a>00507 {
-<a name="l00508"></a>00508 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"BEGIN TRANSACTION"</span>);
-<a name="l00509"></a>00509 }
-<a name="l00510"></a>00510
-<a name="l00511"></a>00511 <span class="keywordtype">int</span>
-<a name="l00512"></a><a class="code" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">00512</a> <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sqlite3_stmt *stmt)
-<a name="l00513"></a>00513 {
-<a name="l00514"></a>00514 <span class="keywordtype">int</span> r, ret;
-<a name="l00515"></a>00515
-<a name="l00516"></a>00516 ret = 0;
-<a name="l00517"></a>00517 r = sqlite3_step(stmt);
-<a name="l00518"></a>00518 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00519"></a>00519 fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
-<a name="l00520"></a>00520 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00521"></a>00521 ret = -1;
-<a name="l00522"></a>00522 }
+<a name="l00474"></a>00474 <span class="keywordtype">int</span>
+<a name="l00475"></a><a class="code" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">00475</a> <a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(sqlite3 *db)
+<a name="l00476"></a>00476 {
+<a name="l00477"></a>00477 <span class="keywordtype">char</span> *errmsg;
+<a name="l00478"></a>00478 <span class="keywordtype">int</span> r;
+<a name="l00479"></a>00479
+<a name="l00480"></a>00480 errmsg = NULL;
+<a name="l00481"></a>00481 r = sqlite3_exec(db,
+<a name="l00482"></a>00482 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS lms_internal ("</span>
+<a name="l00483"></a>00483 <span class="stringliteral">"tab TEXT NOT NULL UNIQUE, "</span>
+<a name="l00484"></a>00484 <span class="stringliteral">"version INTEGER NOT NULL"</span>
+<a name="l00485"></a>00485 <span class="stringliteral">")"</span>,
+<a name="l00486"></a>00486 NULL, NULL, &errmsg);
+<a name="l00487"></a>00487 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00488"></a>00488 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'lms_internal' table: %s\n"</span>,
+<a name="l00489"></a>00489 errmsg);
+<a name="l00490"></a>00490 sqlite3_free(errmsg);
+<a name="l00491"></a>00491 <span class="keywordflow">return</span> -1;
+<a name="l00492"></a>00492 }
+<a name="l00493"></a>00493
+<a name="l00494"></a>00494 r = sqlite3_exec(db,
+<a name="l00495"></a>00495 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS files ("</span>
+<a name="l00496"></a>00496 <span class="stringliteral">"id INTEGER PRIMARY KEY AUTOINCREMENT, "</span>
+<a name="l00497"></a>00497 <span class="stringliteral">"path BLOB NOT NULL UNIQUE, "</span>
+<a name="l00498"></a>00498 <span class="stringliteral">"mtime INTEGER NOT NULL, "</span>
+<a name="l00499"></a>00499 <span class="stringliteral">"dtime INTEGER NOT NULL, "</span>
+<a name="l00500"></a>00500 <span class="stringliteral">"size INTEGER NOT NULL"</span>
+<a name="l00501"></a>00501 <span class="stringliteral">")"</span>,
+<a name="l00502"></a>00502 NULL, NULL, &errmsg);
+<a name="l00503"></a>00503 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00504"></a>00504 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files' table: %s\n"</span>, errmsg);
+<a name="l00505"></a>00505 sqlite3_free(errmsg);
+<a name="l00506"></a>00506 <span class="keywordflow">return</span> -2;
+<a name="l00507"></a>00507 }
+<a name="l00508"></a>00508
+<a name="l00509"></a>00509 r = sqlite3_exec(db,
+<a name="l00510"></a>00510 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS files_path_idx ON files ("</span>
+<a name="l00511"></a>00511 <span class="stringliteral">"path"</span>
+<a name="l00512"></a>00512 <span class="stringliteral">")"</span>,
+<a name="l00513"></a>00513 NULL, NULL, &errmsg);
+<a name="l00514"></a>00514 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00515"></a>00515 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'files_path_idx' index: %s\n"</span>,
+<a name="l00516"></a>00516 errmsg);
+<a name="l00517"></a>00517 sqlite3_free(errmsg);
+<a name="l00518"></a>00518 <span class="keywordflow">return</span> -3;
+<a name="l00519"></a>00519 }
+<a name="l00520"></a>00520
+<a name="l00521"></a>00521 <span class="keywordflow">return</span> 0;
+<a name="l00522"></a>00522 }
<a name="l00523"></a>00523
-<a name="l00524"></a>00524 r = sqlite3_reset(stmt);
-<a name="l00525"></a>00525 <span class="keywordflow">if</span> (r != SQLITE_OK)
-<a name="l00526"></a>00526 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
-<a name="l00527"></a>00527 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00528"></a>00528
-<a name="l00529"></a>00529 <span class="keywordflow">return</span> ret;
-<a name="l00530"></a>00530 }
-<a name="l00531"></a>00531
-<a name="l00532"></a>00532 sqlite3_stmt *
-<a name="l00533"></a><a class="code" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">00533</a> <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(sqlite3 *db)
-<a name="l00534"></a>00534 {
-<a name="l00535"></a>00535 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"COMMIT"</span>);
-<a name="l00536"></a>00536 }
-<a name="l00537"></a>00537
-<a name="l00538"></a>00538 <span class="keywordtype">int</span>
-<a name="l00539"></a><a class="code" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">00539</a> <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sqlite3_stmt *stmt)
-<a name="l00540"></a>00540 {
-<a name="l00541"></a>00541 <span class="keywordtype">int</span> r, ret;
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543 ret = 0;
-<a name="l00544"></a>00544 r = sqlite3_step(stmt);
-<a name="l00545"></a>00545 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00546"></a>00546 fprintf(stderr, <span class="stringliteral">"ERROR: could not end transaction: %s\n"</span>,
+<a name="l00524"></a>00524
+<a name="l00525"></a>00525 sqlite3_stmt *
+<a name="l00526"></a><a class="code" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">00526</a> <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(sqlite3 *db)
+<a name="l00527"></a>00527 {
+<a name="l00528"></a>00528 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"BEGIN TRANSACTION"</span>);
+<a name="l00529"></a>00529 }
+<a name="l00530"></a>00530
+<a name="l00531"></a>00531 <span class="keywordtype">int</span>
+<a name="l00532"></a><a class="code" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">00532</a> <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sqlite3_stmt *stmt)
+<a name="l00533"></a>00533 {
+<a name="l00534"></a>00534 <span class="keywordtype">int</span> r, ret;
+<a name="l00535"></a>00535
+<a name="l00536"></a>00536 ret = 0;
+<a name="l00537"></a>00537 r = sqlite3_step(stmt);
+<a name="l00538"></a>00538 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00539"></a>00539 fprintf(stderr, <span class="stringliteral">"ERROR: could not begin transaction: %s\n"</span>,
+<a name="l00540"></a>00540 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00541"></a>00541 ret = -1;
+<a name="l00542"></a>00542 }
+<a name="l00543"></a>00543
+<a name="l00544"></a>00544 r = sqlite3_reset(stmt);
+<a name="l00545"></a>00545 <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00546"></a>00546 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
<a name="l00547"></a>00547 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00548"></a>00548 ret = -1;
-<a name="l00549"></a>00549 }
-<a name="l00550"></a>00550
-<a name="l00551"></a>00551 r = sqlite3_reset(stmt);
-<a name="l00552"></a>00552 <span class="keywordflow">if</span> (r != SQLITE_OK)
-<a name="l00553"></a>00553 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
-<a name="l00554"></a>00554 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00555"></a>00555
-<a name="l00556"></a>00556 <span class="keywordflow">return</span> ret;
-<a name="l00557"></a>00557 }
-<a name="l00558"></a>00558
-<a name="l00559"></a>00559 sqlite3_stmt *
-<a name="l00560"></a><a class="code" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">00560</a> <a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(sqlite3 *db)
-<a name="l00561"></a>00561 {
-<a name="l00562"></a>00562 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00563"></a>00563 <span class="stringliteral">"SELECT id, mtime, dtime, size FROM files WHERE path = ?"</span>);
-<a name="l00564"></a>00564 }
-<a name="l00565"></a>00565
-<a name="l00566"></a>00566 <span class="keywordtype">int</span>
-<a name="l00567"></a><a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">00567</a> <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00568"></a>00568 {
-<a name="l00569"></a>00569 <span class="keywordtype">int</span> r, ret;
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="keywordflow">return</span> ret;
+<a name="l00550"></a>00550 }
+<a name="l00551"></a>00551
+<a name="l00552"></a>00552 sqlite3_stmt *
+<a name="l00553"></a><a class="code" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">00553</a> <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(sqlite3 *db)
+<a name="l00554"></a>00554 {
+<a name="l00555"></a>00555 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"COMMIT"</span>);
+<a name="l00556"></a>00556 }
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <span class="keywordtype">int</span>
+<a name="l00559"></a><a class="code" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">00559</a> <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sqlite3_stmt *stmt)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <span class="keywordtype">int</span> r, ret;
+<a name="l00562"></a>00562
+<a name="l00563"></a>00563 ret = 0;
+<a name="l00564"></a>00564 r = sqlite3_step(stmt);
+<a name="l00565"></a>00565 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00566"></a>00566 fprintf(stderr, <span class="stringliteral">"ERROR: could not end transaction: %s\n"</span>,
+<a name="l00567"></a>00567 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00568"></a>00568 ret = -1;
+<a name="l00569"></a>00569 }
<a name="l00570"></a>00570
-<a name="l00571"></a>00571 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
-<a name="l00572"></a>00572 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00573"></a>00573 <span class="keywordflow">goto</span> done;
-<a name="l00574"></a>00574
-<a name="l00575"></a>00575 r = sqlite3_step(stmt);
-<a name="l00576"></a>00576 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
-<a name="l00577"></a>00577 ret = 1;
-<a name="l00578"></a>00578 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = -1;
-<a name="l00579"></a>00579 <span class="keywordflow">goto</span> done;
-<a name="l00580"></a>00580 }
-<a name="l00581"></a>00581
-<a name="l00582"></a>00582 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
-<a name="l00583"></a>00583 fprintf(stderr, <span class="stringliteral">"ERROR: could not get file info from table: %s\n"</span>,
-<a name="l00584"></a>00584 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00585"></a>00585 ret = -2;
-<a name="l00586"></a>00586 <span class="keywordflow">goto</span> done;
-<a name="l00587"></a>00587 }
-<a name="l00588"></a>00588
-<a name="l00589"></a>00589 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
-<a name="l00590"></a>00590 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 1);
-<a name="l00591"></a>00591 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 2);
-<a name="l00592"></a>00592 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 3);
-<a name="l00593"></a>00593 ret = 0;
+<a name="l00571"></a>00571 r = sqlite3_reset(stmt);
+<a name="l00572"></a>00572 <span class="keywordflow">if</span> (r != SQLITE_OK)
+<a name="l00573"></a>00573 fprintf(stderr, <span class="stringliteral">"ERROR: could not reset SQL statement: %s\n"</span>,
+<a name="l00574"></a>00574 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576 <span class="keywordflow">return</span> ret;
+<a name="l00577"></a>00577 }
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 sqlite3_stmt *
+<a name="l00580"></a><a class="code" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">00580</a> <a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(sqlite3 *db)
+<a name="l00581"></a>00581 {
+<a name="l00582"></a>00582 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00583"></a>00583 <span class="stringliteral">"SELECT id, mtime, dtime, size FROM files WHERE path = ?"</span>);
+<a name="l00584"></a>00584 }
+<a name="l00585"></a>00585
+<a name="l00586"></a>00586 <span class="keywordtype">int</span>
+<a name="l00587"></a><a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">00587</a> <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00588"></a>00588 {
+<a name="l00589"></a>00589 <span class="keywordtype">int</span> r, ret;
+<a name="l00590"></a>00590
+<a name="l00591"></a>00591 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
+<a name="l00592"></a>00592 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00593"></a>00593 <span class="keywordflow">goto</span> done;
<a name="l00594"></a>00594
-<a name="l00595"></a>00595 done:
-<a name="l00596"></a>00596 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00597"></a>00597
-<a name="l00598"></a>00598 <span class="keywordflow">return</span> ret;
-<a name="l00599"></a>00599 }
-<a name="l00600"></a>00600
-<a name="l00601"></a>00601 sqlite3_stmt *
-<a name="l00602"></a><a class="code" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">00602</a> <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(sqlite3 *db)
-<a name="l00603"></a>00603 {
-<a name="l00604"></a>00604 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00605"></a>00605 <span class="stringliteral">"UPDATE files SET mtime = ?, dtime = ?, size = ? WHERE id = ?"</span>);
-<a name="l00606"></a>00606 }
-<a name="l00607"></a>00607
-<a name="l00608"></a>00608 <span class="keywordtype">int</span>
-<a name="l00609"></a><a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">00609</a> <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00610"></a>00610 {
-<a name="l00611"></a>00611 <span class="keywordtype">int</span> r, ret;
-<a name="l00612"></a>00612
-<a name="l00613"></a>00613 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
-<a name="l00614"></a>00614 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00615"></a>00615 <span class="keywordflow">goto</span> done;
-<a name="l00616"></a>00616
-<a name="l00617"></a>00617 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
-<a name="l00618"></a>00618 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00619"></a>00619 <span class="keywordflow">goto</span> done;
+<a name="l00595"></a>00595 r = sqlite3_step(stmt);
+<a name="l00596"></a>00596 <span class="keywordflow">if</span> (r == SQLITE_DONE) {
+<a name="l00597"></a>00597 ret = 1;
+<a name="l00598"></a>00598 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = -1;
+<a name="l00599"></a>00599 <span class="keywordflow">goto</span> done;
+<a name="l00600"></a>00600 }
+<a name="l00601"></a>00601
+<a name="l00602"></a>00602 <span class="keywordflow">if</span> (r != SQLITE_ROW) {
+<a name="l00603"></a>00603 fprintf(stderr, <span class="stringliteral">"ERROR: could not get file info from table: %s\n"</span>,
+<a name="l00604"></a>00604 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00605"></a>00605 ret = -2;
+<a name="l00606"></a>00606 <span class="keywordflow">goto</span> done;
+<a name="l00607"></a>00607 }
+<a name="l00608"></a>00608
+<a name="l00609"></a>00609 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00610"></a>00610 finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 1);
+<a name="l00611"></a>00611 finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00612"></a>00612 finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = sqlite3_column_int(stmt, 3);
+<a name="l00613"></a>00613 ret = 0;
+<a name="l00614"></a>00614
+<a name="l00615"></a>00615 done:
+<a name="l00616"></a>00616 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="keywordflow">return</span> ret;
+<a name="l00619"></a>00619 }
<a name="l00620"></a>00620
-<a name="l00621"></a>00621 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
-<a name="l00622"></a>00622 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00623"></a>00623 <span class="keywordflow">goto</span> done;
-<a name="l00624"></a>00624
-<a name="l00625"></a>00625 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
-<a name="l00626"></a>00626 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00627"></a>00627 <span class="keywordflow">goto</span> done;
-<a name="l00628"></a>00628
-<a name="l00629"></a>00629 r = sqlite3_step(stmt);
-<a name="l00630"></a>00630 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00631"></a>00631 fprintf(stderr, <span class="stringliteral">"ERROR: could not update file info: %s\n"</span>,
-<a name="l00632"></a>00632 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00633"></a>00633 ret = -5;
-<a name="l00634"></a>00634 <span class="keywordflow">goto</span> done;
-<a name="l00635"></a>00635 }
+<a name="l00621"></a>00621 sqlite3_stmt *
+<a name="l00622"></a><a class="code" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">00622</a> <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(sqlite3 *db)
+<a name="l00623"></a>00623 {
+<a name="l00624"></a>00624 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00625"></a>00625 <span class="stringliteral">"UPDATE files SET mtime = ?, dtime = ?, size = ? WHERE id = ?"</span>);
+<a name="l00626"></a>00626 }
+<a name="l00627"></a>00627
+<a name="l00628"></a>00628 <span class="keywordtype">int</span>
+<a name="l00629"></a><a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">00629</a> <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00630"></a>00630 {
+<a name="l00631"></a>00631 <span class="keywordtype">int</span> r, ret;
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
+<a name="l00634"></a>00634 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00635"></a>00635 <span class="keywordflow">goto</span> done;
<a name="l00636"></a>00636
-<a name="l00637"></a>00637 ret = 0;
-<a name="l00638"></a>00638
-<a name="l00639"></a>00639 done:
-<a name="l00640"></a>00640 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00641"></a>00641
-<a name="l00642"></a>00642 <span class="keywordflow">return</span> ret;
-<a name="l00643"></a>00643 }
+<a name="l00637"></a>00637 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00638"></a>00638 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00639"></a>00639 <span class="keywordflow">goto</span> done;
+<a name="l00640"></a>00640
+<a name="l00641"></a>00641 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
+<a name="l00642"></a>00642 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00643"></a>00643 <span class="keywordflow">goto</span> done;
<a name="l00644"></a>00644
-<a name="l00645"></a>00645 sqlite3_stmt *
-<a name="l00646"></a><a class="code" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">00646</a> <a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(sqlite3 *db)
-<a name="l00647"></a>00647 {
-<a name="l00648"></a>00648 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00649"></a>00649 <span class="stringliteral">"INSERT INTO files (path, mtime, dtime, size) VALUES(?, ?, ?, ?)"</span>);
-<a name="l00650"></a>00650 }
-<a name="l00651"></a>00651
-<a name="l00652"></a>00652 <span class="keywordtype">int</span>
-<a name="l00653"></a><a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">00653</a> <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00654"></a>00654 {
-<a name="l00655"></a>00655 <span class="keywordtype">int</span> r, ret;
+<a name="l00645"></a>00645 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00646"></a>00646 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00647"></a>00647 <span class="keywordflow">goto</span> done;
+<a name="l00648"></a>00648
+<a name="l00649"></a>00649 r = sqlite3_step(stmt);
+<a name="l00650"></a>00650 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00651"></a>00651 fprintf(stderr, <span class="stringliteral">"ERROR: could not update file info: %s\n"</span>,
+<a name="l00652"></a>00652 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00653"></a>00653 ret = -5;
+<a name="l00654"></a>00654 <span class="keywordflow">goto</span> done;
+<a name="l00655"></a>00655 }
<a name="l00656"></a>00656
-<a name="l00657"></a>00657 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
-<a name="l00658"></a>00658 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00659"></a>00659 <span class="keywordflow">goto</span> done;
-<a name="l00660"></a>00660
-<a name="l00661"></a>00661 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
-<a name="l00662"></a>00662 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00663"></a>00663 <span class="keywordflow">goto</span> done;
+<a name="l00657"></a>00657 ret = 0;
+<a name="l00658"></a>00658
+<a name="l00659"></a>00659 done:
+<a name="l00660"></a>00660 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00661"></a>00661
+<a name="l00662"></a>00662 <span class="keywordflow">return</span> ret;
+<a name="l00663"></a>00663 }
<a name="l00664"></a>00664
-<a name="l00665"></a>00665 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
-<a name="l00666"></a>00666 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00667"></a>00667 <span class="keywordflow">goto</span> done;
-<a name="l00668"></a>00668
-<a name="l00669"></a>00669 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
-<a name="l00670"></a>00670 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00671"></a>00671 <span class="keywordflow">goto</span> done;
-<a name="l00672"></a>00672
-<a name="l00673"></a>00673 r = sqlite3_step(stmt);
-<a name="l00674"></a>00674 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00675"></a>00675 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert file info: %s\n"</span>,
-<a name="l00676"></a>00676 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00677"></a>00677 ret = -5;
-<a name="l00678"></a>00678 <span class="keywordflow">goto</span> done;
-<a name="l00679"></a>00679 }
+<a name="l00665"></a>00665 sqlite3_stmt *
+<a name="l00666"></a><a class="code" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">00666</a> <a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(sqlite3 *db)
+<a name="l00667"></a>00667 {
+<a name="l00668"></a>00668 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00669"></a>00669 <span class="stringliteral">"INSERT INTO files (path, mtime, dtime, size) VALUES(?, ?, ?, ?)"</span>);
+<a name="l00670"></a>00670 }
+<a name="l00671"></a>00671
+<a name="l00672"></a>00672 <span class="keywordtype">int</span>
+<a name="l00673"></a><a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">00673</a> <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00674"></a>00674 {
+<a name="l00675"></a>00675 <span class="keywordtype">int</span> r, ret;
+<a name="l00676"></a>00676
+<a name="l00677"></a>00677 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>);
+<a name="l00678"></a>00678 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00679"></a>00679 <span class="keywordflow">goto</span> done;
<a name="l00680"></a>00680
-<a name="l00681"></a>00681 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
-<a name="l00682"></a>00682 ret = 0;
-<a name="l00683"></a>00683
-<a name="l00684"></a>00684 done:
-<a name="l00685"></a>00685 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00686"></a>00686
-<a name="l00687"></a>00687 <span class="keywordflow">return</span> ret;
-<a name="l00688"></a>00688 }
-<a name="l00689"></a>00689
-<a name="l00690"></a>00690 sqlite3_stmt *
-<a name="l00691"></a><a class="code" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">00691</a> <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(sqlite3 *db)
-<a name="l00692"></a>00692 {
-<a name="l00693"></a>00693 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"DELETE FROM files WHERE id = ?"</span>);
-<a name="l00694"></a>00694 }
-<a name="l00695"></a>00695
-<a name="l00696"></a>00696 <span class="keywordtype">int</span>
-<a name="l00697"></a><a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">00697</a> <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00698"></a>00698 {
-<a name="l00699"></a>00699 <span class="keywordtype">int</span> r, ret;
+<a name="l00681"></a>00681 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 2, finfo-><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>);
+<a name="l00682"></a>00682 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00683"></a>00683 <span class="keywordflow">goto</span> done;
+<a name="l00684"></a>00684
+<a name="l00685"></a>00685 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00686"></a>00686 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00687"></a>00687 <span class="keywordflow">goto</span> done;
+<a name="l00688"></a>00688
+<a name="l00689"></a>00689 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, finfo-><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>);
+<a name="l00690"></a>00690 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00691"></a>00691 <span class="keywordflow">goto</span> done;
+<a name="l00692"></a>00692
+<a name="l00693"></a>00693 r = sqlite3_step(stmt);
+<a name="l00694"></a>00694 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00695"></a>00695 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert file info: %s\n"</span>,
+<a name="l00696"></a>00696 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00697"></a>00697 ret = -5;
+<a name="l00698"></a>00698 <span class="keywordflow">goto</span> done;
+<a name="l00699"></a>00699 }
<a name="l00700"></a>00700
-<a name="l00701"></a>00701 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
-<a name="l00702"></a>00702 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00703"></a>00703 <span class="keywordflow">goto</span> done;
-<a name="l00704"></a>00704
-<a name="l00705"></a>00705 r = sqlite3_step(stmt);
-<a name="l00706"></a>00706 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00707"></a>00707 fprintf(stderr, <span class="stringliteral">"ERROR: could not delete file info: %s\n"</span>,
-<a name="l00708"></a>00708 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00709"></a>00709 ret = -2;
-<a name="l00710"></a>00710 <span class="keywordflow">goto</span> done;
-<a name="l00711"></a>00711 }
-<a name="l00712"></a>00712 ret = 0;
-<a name="l00713"></a>00713
-<a name="l00714"></a>00714 done:
-<a name="l00715"></a>00715 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00716"></a>00716
-<a name="l00717"></a>00717 <span class="keywordflow">return</span> ret;
-<a name="l00718"></a>00718 }
-<a name="l00719"></a>00719
-<a name="l00720"></a>00720 sqlite3_stmt *
-<a name="l00721"></a><a class="code" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">00721</a> <a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(sqlite3 *db)
-<a name="l00722"></a>00722 {
-<a name="l00723"></a>00723 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"UPDATE files SET dtime = ? WHERE id = ?"</span>);
-<a name="l00724"></a>00724 }
-<a name="l00725"></a>00725
-<a name="l00726"></a>00726 <span class="keywordtype">int</span>
-<a name="l00727"></a><a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">00727</a> <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
-<a name="l00728"></a>00728 {
-<a name="l00729"></a>00729 <span class="keywordtype">int</span> r, ret;
-<a name="l00730"></a>00730
-<a name="l00731"></a>00731 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
-<a name="l00732"></a>00732 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00733"></a>00733 <span class="keywordflow">goto</span> done;
-<a name="l00734"></a>00734
-<a name="l00735"></a>00735 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
-<a name="l00736"></a>00736 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00737"></a>00737 <span class="keywordflow">goto</span> done;
-<a name="l00738"></a>00738
-<a name="l00739"></a>00739 r = sqlite3_step(stmt);
-<a name="l00740"></a>00740 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00741"></a>00741 fprintf(stderr, <span class="stringliteral">"ERROR: could not set file dtime: %s\n"</span>,
-<a name="l00742"></a>00742 sqlite3_errmsg(sqlite3_db_handle(stmt)));
-<a name="l00743"></a>00743 ret = -3;
-<a name="l00744"></a>00744 <span class="keywordflow">goto</span> done;
-<a name="l00745"></a>00745 }
-<a name="l00746"></a>00746
-<a name="l00747"></a>00747 ret = 0;
-<a name="l00748"></a>00748
-<a name="l00749"></a>00749 done:
-<a name="l00750"></a>00750 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00751"></a>00751
-<a name="l00752"></a>00752 <span class="keywordflow">return</span> ret;
-<a name="l00753"></a>00753 }
+<a name="l00701"></a>00701 finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_last_insert_rowid(sqlite3_db_handle(stmt));
+<a name="l00702"></a>00702 ret = 0;
+<a name="l00703"></a>00703
+<a name="l00704"></a>00704 done:
+<a name="l00705"></a>00705 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00706"></a>00706
+<a name="l00707"></a>00707 <span class="keywordflow">return</span> ret;
+<a name="l00708"></a>00708 }
+<a name="l00709"></a>00709
+<a name="l00710"></a>00710 sqlite3_stmt *
+<a name="l00711"></a><a class="code" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">00711</a> <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(sqlite3 *db)
+<a name="l00712"></a>00712 {
+<a name="l00713"></a>00713 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"DELETE FROM files WHERE id = ?"</span>);
+<a name="l00714"></a>00714 }
+<a name="l00715"></a>00715
+<a name="l00716"></a>00716 <span class="keywordtype">int</span>
+<a name="l00717"></a><a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">00717</a> <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00718"></a>00718 {
+<a name="l00719"></a>00719 <span class="keywordtype">int</span> r, ret;
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00722"></a>00722 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00723"></a>00723 <span class="keywordflow">goto</span> done;
+<a name="l00724"></a>00724
+<a name="l00725"></a>00725 r = sqlite3_step(stmt);
+<a name="l00726"></a>00726 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00727"></a>00727 fprintf(stderr, <span class="stringliteral">"ERROR: could not delete file info: %s\n"</span>,
+<a name="l00728"></a>00728 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00729"></a>00729 ret = -2;
+<a name="l00730"></a>00730 <span class="keywordflow">goto</span> done;
+<a name="l00731"></a>00731 }
+<a name="l00732"></a>00732 ret = 0;
+<a name="l00733"></a>00733
+<a name="l00734"></a>00734 done:
+<a name="l00735"></a>00735 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00736"></a>00736
+<a name="l00737"></a>00737 <span class="keywordflow">return</span> ret;
+<a name="l00738"></a>00738 }
+<a name="l00739"></a>00739
+<a name="l00740"></a>00740 sqlite3_stmt *
+<a name="l00741"></a><a class="code" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">00741</a> <a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(sqlite3 *db)
+<a name="l00742"></a>00742 {
+<a name="l00743"></a>00743 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db, <span class="stringliteral">"UPDATE files SET dtime = ? WHERE id = ?"</span>);
+<a name="l00744"></a>00744 }
+<a name="l00745"></a>00745
+<a name="l00746"></a>00746 <span class="keywordtype">int</span>
+<a name="l00747"></a><a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">00747</a> <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00748"></a>00748 {
+<a name="l00749"></a>00749 <span class="keywordtype">int</span> r, ret;
+<a name="l00750"></a>00750
+<a name="l00751"></a>00751 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>);
+<a name="l00752"></a>00752 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00753"></a>00753 <span class="keywordflow">goto</span> done;
<a name="l00754"></a>00754
-<a name="l00755"></a>00755 sqlite3_stmt *
-<a name="l00756"></a><a class="code" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">00756</a> <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(sqlite3 *db)
-<a name="l00757"></a>00757 {
-<a name="l00758"></a>00758 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
-<a name="l00759"></a>00759 <span class="stringliteral">"SELECT id, path, mtime, dtime, size FROM files WHERE path LIKE ?"</span>);
-<a name="l00760"></a>00760 }
-<a name="l00761"></a>00761
-<a name="l00762"></a>00762 <span class="keywordtype">int</span>
-<a name="l00763"></a><a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">00763</a> <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len)
-<a name="l00764"></a>00764 {
-<a name="l00765"></a>00765 <span class="keywordtype">int</span> ret;
+<a name="l00755"></a>00755 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, finfo-><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>);
+<a name="l00756"></a>00756 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00757"></a>00757 <span class="keywordflow">goto</span> done;
+<a name="l00758"></a>00758
+<a name="l00759"></a>00759 r = sqlite3_step(stmt);
+<a name="l00760"></a>00760 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00761"></a>00761 fprintf(stderr, <span class="stringliteral">"ERROR: could not set file dtime: %s\n"</span>,
+<a name="l00762"></a>00762 sqlite3_errmsg(sqlite3_db_handle(stmt)));
+<a name="l00763"></a>00763 ret = -3;
+<a name="l00764"></a>00764 <span class="keywordflow">goto</span> done;
+<a name="l00765"></a>00765 }
<a name="l00766"></a>00766
-<a name="l00767"></a>00767 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, path, len);
-<a name="l00768"></a>00768 <span class="keywordflow">return</span> ret;
-<a name="l00769"></a>00769 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00767"></a>00767 ret = 0;
+<a name="l00768"></a>00768
+<a name="l00769"></a>00769 done:
+<a name="l00770"></a>00770 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00771"></a>00771
+<a name="l00772"></a>00772 <span class="keywordflow">return</span> ret;
+<a name="l00773"></a>00773 }
+<a name="l00774"></a>00774
+<a name="l00775"></a>00775 sqlite3_stmt *
+<a name="l00776"></a><a class="code" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">00776</a> <a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(sqlite3 *db)
+<a name="l00777"></a>00777 {
+<a name="l00778"></a>00778 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(db,
+<a name="l00779"></a>00779 <span class="stringliteral">"SELECT id, path, mtime, dtime, size FROM files WHERE path LIKE ?"</span>);
+<a name="l00780"></a>00780 }
+<a name="l00781"></a>00781
+<a name="l00782"></a>00782 <span class="keywordtype">int</span>
+<a name="l00783"></a><a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">00783</a> <a class="code" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a>(sqlite3_stmt *stmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len)
+<a name="l00784"></a>00784 {
+<a name="l00785"></a>00785 <span class="keywordtype">int</span> ret;
+<a name="l00786"></a>00786
+<a name="l00787"></a>00787 ret = <a class="code" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a>(stmt, 1, path, len);
+<a name="l00788"></a>00788 <span class="keywordflow">return</span> ret;
+<a name="l00789"></a>00789 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_common.c File Reference</h1><code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<code>#include <stdlib.h></code><br>
<code>#include <stdio.h></code><br>
<code>#include <string.h></code><br>
<p>
-Include dependency graph for lightmediascanner_db_common.c:<p><center><img src="lightmediascanner__db__common_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_common.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_common.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_common.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_common.c_map">
-<area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="295,56,487,83"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="537,107,705,133"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="795,107,923,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="756,157,961,184"></map>
+<area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="23,84,257,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="177,161,377,188"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265"></map>
+</div>
<p>
<a href="lightmediascanner__db__common_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a> (sqlite3 *db, const char *table, unsigned int version)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data)</td></tr>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00512">512</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">532</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="fee26461dbd6c89c82794c94aaeeaef6"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_blob" ref="fee26461dbd6c89c82794c94aaeeaef6" args="(sqlite3_stmt *stmt, int col, const void *blob, int len)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00763">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="4ae660a876f1e362d1ab2f8c68bdef3f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_double" ref="4ae660a876f1e362d1ab2f8c68bdef3f" args="(sqlite3_stmt *stmt, int col, double value)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00231">231</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00251">251</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="de261036cf3228f0b6a79a9c68687c4f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int" ref="de261036cf3228f0b6a79a9c68687c4f" args="(sqlite3_stmt *stmt, int col, int value)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">212</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">232</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f2fe78bc45dc33d843313a846db5ce7c"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int64" ref="f2fe78bc45dc33d843313a846db5ce7c" args="(sqlite3_stmt *stmt, int col, int64_t value)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00171">171</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">191</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="2a0a5d3a27fdee8508b2b0cc59979417"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_int64_or_null" ref="2a0a5d3a27fdee8508b2b0cc59979417" args="(sqlite3_stmt *stmt, int col, int64_t *p_value)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00190">190</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00210">210</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="88c461ae88da3eb47987c5a0b15c5888"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_bind_text" ref="88c461ae88da3eb47987c5a0b15c5888" args="(sqlite3_stmt *stmt, int col, const char *text, int len)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00125">125</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="19b0458b9d7b76370588156e931a9c04"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_add" ref="19b0458b9d7b76370588156e931a9c04" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">387</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">lms_db_cache_entry::db</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00247">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00097">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00091">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00104">lms_db_video_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">407</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">lms_db_cache_entry::db</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="296c81e4c64be1c7935ef31038aeb2c0"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_del" ref="296c81e4c64be1c7935ef31038aeb2c0" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">417</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00352">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00173">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00165">lms_db_playlist_free()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00177">lms_db_video_free()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">437</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">lms_db_cache::size</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="e7a672fa5760bae1a669c737648fe7d3"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_cache_get" ref="e7a672fa5760bae1a669c737648fe7d3" args="(struct lms_db_cache *cache, const sqlite3 *db, void **pdata)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">442</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00247">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00097">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00091">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00104">lms_db_video_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">462</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">lms_db_cache_entry::data</a>, and <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">lms_db_cache::entries</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00297">lms_db_audio_new()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00117">lms_db_image_new()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00111">lms_db_playlist_new()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00124">lms_db_video_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="5fddf47521f83929b0c90a481fa01c5b"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt" ref="5fddf47521f83929b0c90a481fa01c5b" args="(sqlite3 *db, const char *sql)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">101</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00028">sqlite3_prepare_v2()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00341">lms_db_audio_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">lms_db_compile_stmt_begin_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">lms_db_compile_stmt_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">lms_db_compile_stmt_end_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">lms_db_compile_stmt_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">lms_db_compile_stmt_get_files()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">lms_db_compile_stmt_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">lms_db_compile_stmt_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">lms_db_compile_stmt_update_file_info()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00161">lms_db_image_start()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00155">lms_db_playlist_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00168">lms_db_video_start()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">81</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00008">sqlite3_prepare_v2()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00291">lms_db_audio_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00506">lms_db_compile_stmt_begin_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00691">lms_db_compile_stmt_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00533">lms_db_compile_stmt_end_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00560">lms_db_compile_stmt_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00756">lms_db_compile_stmt_get_files()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00646">lms_db_compile_stmt_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00721">lms_db_compile_stmt_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00602">lms_db_compile_stmt_update_file_info()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00141">lms_db_image_start()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00135">lms_db_playlist_start()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00148">lms_db_video_start()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="196,5,319,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="223,5,369,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">526</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00506">506</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="297,5,436,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="487,5,609,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="349,5,517,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="567,5,713,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">711</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00691">691</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="331,5,499,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="548,5,695,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">553</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00533">533</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="339,5,507,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="556,5,703,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">580</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00560">560</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="271,5,409,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="460,5,583,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="309,5,477,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="527,5,673,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">776</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00756">756</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="247,5,385,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="436,5,559,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="285,5,453,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="503,5,649,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">666</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00646">646</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="284,5,423,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="473,5,596,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">741</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00721">721</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="279,5,417,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="468,5,591,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">622</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00602">602</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="289,5,428,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="479,5,601,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="333,5,501,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="551,5,697,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00455">455</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00475">475</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="822cae681398710b63c9af149fdacedb"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_create_trigger_if_not_exists" ref="822cae681398710b63c9af149fdacedb" args="(sqlite3 *db, const char *sql)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00035">35</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="bb2a9cdbbc7680d1ec85ef3f086b3f63"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_delete_file_info" ref="bb2a9cdbbc7680d1ec85ef3f086b3f63" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">717</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">697</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00171">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="205,5,331,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="207,56,329,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="380,56,521,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="237,5,379,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="232,56,384,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="433,56,599,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00539">539</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">559</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="32110a4825e598ca6df329f55b0b62b5"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_finalize_stmt" ref="32110a4825e598ca6df329f55b0b62b5" args="(sqlite3_stmt *stmt, const char *name)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00352">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00173">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00165">lms_db_playlist_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00177">lms_db_video_free()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">113</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00402">lms_db_audio_free()</a>, <a class="el" href="lightmediascanner__db__image_8c-source.html#l00193">lms_db_image_free()</a>, <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00185">lms_db_playlist_free()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__video_8c-source.html#l00197">lms_db_video_free()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c0b7cf0b2eb0f55fbf8a4103bc9569d1"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_get_file_info" ref="c0b7cf0b2eb0f55fbf8a4103bc9569d1" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">587</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">567</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00148">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="191,5,311,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="189,56,312,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="361,56,503,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="219,5,355,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="211,56,363,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="412,56,577,83"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">783</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00763">763</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00148">lms_db_bind_blob()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="169,5,289,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="187,5,323,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">673</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">653</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00148">lms_db_bind_blob()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="204,5,324,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="208,56,320,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="203,107,325,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="375,107,516,133"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="235,6,371,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="240,56,365,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="227,107,379,134"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="428,107,593,134"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">128</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">sqlite3_clear_bindings()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00016">sqlite3_clear_bindings()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="207,5,372,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">747</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">727</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00171">lms_db_bind_int64()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="204,5,316,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="197,56,323,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="199,107,321,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="372,107,513,133"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="240,6,365,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="232,56,373,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="227,107,379,134"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="428,107,593,134"></map>
+</div>
</div>
</div><p>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> * </td>
+ <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> * </td>
<td class="paramname"> <em>updaters</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">337</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">lms_db_table_update_if_required()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00317">317</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00347">lms_db_table_update_if_required()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="189,107,349,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="412,5,524,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="409,56,527,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="399,107,537,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="400,157,536,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="407,208,529,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="597,107,720,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="588,208,729,235"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="219,107,413,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="483,5,608,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="476,56,615,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="461,107,629,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="464,157,627,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="469,208,621,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="688,107,835,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="679,208,844,235"></map>
+</div>
</div>
</div><p>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> * </td>
+ <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> * </td>
<td class="paramname"> <em>updaters</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">367</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">lms_db_table_update()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00347">347</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00317">lms_db_table_update()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558" title="lms_db_table_update" alt="" coords="256,107,392,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd" title="lms_db_table_version_get" alt="" coords="440,157,603,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="441,107,601,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="665,5,777,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="663,107,780,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="652,56,791,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="653,208,789,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="660,157,783,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="851,56,973,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="841,157,983,184"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558" title="lms_db_table_update" alt="" coords="297,107,460,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd" title="lms_db_table_version_get" alt="" coords="511,157,705,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="511,107,705,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="776,5,901,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="769,107,908,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="755,56,923,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="757,208,920,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="763,157,915,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="981,56,1128,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="972,157,1137,184"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">270</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00367">lms_db_table_update_if_required()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">250</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00125">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00347">lms_db_table_update_if_required()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="228,5,345,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="217,56,356,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="219,107,355,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="225,157,348,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="416,56,539,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="407,157,548,184"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="265,5,404,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="251,56,419,82"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="253,106,416,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="259,157,411,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="477,56,624,82"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="468,157,633,184"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">304</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00113">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00337">lms_db_table_update()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">284</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00125">lms_db_bind_text()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00093">lms_db_finalize_stmt()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00317">lms_db_table_update()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="228,5,340,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="225,56,343,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="215,107,353,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="216,157,352,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="223,208,345,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="413,107,536,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="404,208,545,235"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="269,5,395,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="263,56,401,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="248,107,416,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="251,157,413,184"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="256,208,408,235"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="475,107,621,133"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="465,208,631,235"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">629</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">609</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">lms_file_info::dtime</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">lms_file_info::id</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">lms_db_bind_int()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">lms_file_info::mtime</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">lms_file_info::size</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png" border="0" usemap="#lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="216,5,328,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="211,56,333,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="383,56,524,83"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="248,5,373,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="235,56,387,83"><area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="436,56,601,83"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00016">16</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">lms_db_reset_stmt()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">36</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">lms_db_reset_stmt()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="21da1a6588f354b758211583559ae405"></a><!-- doxytag: member="lightmediascanner_db_common.c::sqlite3_prepare_v2" ref="21da1a6588f354b758211583559ae405" args="(sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00028">28</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00008">8</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:56 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="204,5,316,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="197,56,323,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="199,107,321,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="372,107,513,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="240,6,365,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="232,56,373,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="227,107,379,134">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="428,107,593,134">
-48d33c778b3fddfffba6e852e034f89e
\ No newline at end of file
+08071d33bbb12eefc193b720bc4e7214
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="216,5,328,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="211,56,333,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="383,56,524,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="248,5,373,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="235,56,387,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="436,56,601,83">
-7412d602f0beb325ae8c656a13097e94
\ No newline at end of file
+bf3faed1b03008eaaa29fbf7c25b1887
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="297,5,436,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="487,5,609,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="349,5,517,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="567,5,713,32">
-597cf289a37dec2c079a7e40c848ec2c
\ No newline at end of file
+b96aba35f641da6d6fa5e565f8871165
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="279,5,417,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="468,5,591,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32">
-4140a991699f501c103f1dd52e357650
\ No newline at end of file
+34eee98bda25d4810e29980eb7072e92
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="289,5,428,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="479,5,601,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="333,5,501,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="551,5,697,32">
-42099300ab356ee9f37a5189393d9a29
\ No newline at end of file
+94afa576b45f5739085ea74ba95f1965
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="207,5,372,32">
-0559150039d6a3e46b15f46277f3053f
\ No newline at end of file
+2c52b54acca396aaa52a1189c009bcdd
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="228,5,340,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="225,56,343,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="215,107,353,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="216,157,352,184">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="223,208,345,235">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="413,107,536,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="404,208,545,235">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="269,5,395,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="263,56,401,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="248,107,416,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="251,157,413,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="256,208,408,235">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="475,107,621,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="465,208,631,235">
-d683eb6d3d57ba2eb96d3762485f9724
\ No newline at end of file
+de8ea54abf447a071be0df841be2d13f
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="331,5,499,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="548,5,695,32">
-11ab49ab26e02addb26e1495f2117883
\ No newline at end of file
+e1abe9cd4e4c9e93a33f6c154ab760ea
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="196,5,319,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="223,5,369,32">
-c88b612b05b498869d844a38382eee06
\ No newline at end of file
+776d6425538abfb0534139a8514f51dc
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="247,5,385,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="436,5,559,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="285,5,453,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="503,5,649,32">
-3cc06df5622a01305fd152e7404ce386
\ No newline at end of file
+74e606f761af9e0a2d1004255979eb6d
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558" title="lms_db_table_update" alt="" coords="256,107,392,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd" title="lms_db_table_version_get" alt="" coords="440,157,603,184">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="441,107,601,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="665,5,777,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="663,107,780,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="652,56,791,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="653,208,789,235">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="660,157,783,184">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="851,56,973,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="841,157,983,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558" title="lms_db_table_update" alt="" coords="297,107,460,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd" title="lms_db_table_version_get" alt="" coords="511,157,705,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="511,107,705,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="776,5,901,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="769,107,908,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="755,56,923,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="757,208,920,235">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="763,157,915,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="981,56,1128,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="972,157,1137,184">
-9db3c86e6669be30b89f5dce87d82668
\ No newline at end of file
+f663dc5548f8ab90053c1b1f73e78e57
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="284,5,423,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="473,5,596,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32">
-70af470fb9b373dbdde441f9c228fdac
\ No newline at end of file
+2b7283a532f18438d2ccb3a033bbfb6a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="189,107,349,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="412,5,524,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="409,56,527,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="399,107,537,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="400,157,536,184">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="407,208,529,235">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="597,107,720,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="588,208,729,235">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7" title="lms_db_table_version_set" alt="" coords="219,107,413,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="483,5,608,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="476,56,615,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="461,107,629,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="464,157,627,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="469,208,621,235">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="688,107,835,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="679,208,844,235">
-28f5727047bcdc514f6c42a943efead4
\ No newline at end of file
+34c6329bb5a19ecf6c143a4c3c034169
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="295,56,487,83">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="537,107,705,133">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="795,107,923,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="756,157,961,184">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="23,84,257,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="177,161,377,188">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265">
-264a73e0300f7fc21733a46a317433fb
\ No newline at end of file
+5e2437ea7180d3cd3e57391b2cfb5fef
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="271,5,409,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="460,5,583,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="309,5,477,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="527,5,673,32">
-48dd492320b5d2c740f331d4213ef1e6
\ No newline at end of file
+515ab1a33489c751c85b01de97550c79
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="205,5,331,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="207,56,329,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="380,56,521,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c" title="lms_db_bind_int64" alt="" coords="237,5,379,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="232,56,384,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="433,56,599,83">
-f15d940169e90cc24dc1006e856a6422
\ No newline at end of file
+eea30ce6c332da64d4b7abc8a3a2ed8a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="339,5,507,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="556,5,703,32">
-5a19337cd92bc81a6609fb3efc0944b8
\ No newline at end of file
+44282c967d400f024202493a8b3e315a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="191,5,311,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="189,56,312,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="361,56,503,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="219,5,355,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="211,56,363,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="412,56,577,83">
-1fc1d627110c5472cfa8eca613ac8338
\ No newline at end of file
+528de32f156beb4e1c64dfaf588f2231
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="169,5,289,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="187,5,323,32">
-cc1edbcc8e3d21faf0252ae0d894ea4d
\ No newline at end of file
+17aa47e0af726015b9a82fbf71420900
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="204,5,324,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="208,56,320,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="203,107,325,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="375,107,516,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="235,6,371,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f" title="lms_db_bind_int" alt="" coords="240,56,365,83">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="227,107,379,134">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="428,107,593,134">
-588cb80a9f2488c89433dd877e1f5200
\ No newline at end of file
+9bd1a281cb9ff1612522932d0a15c812
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="228,5,345,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="217,56,356,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="219,107,355,133">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="225,157,348,184">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="416,56,539,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="407,157,548,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888" title="lms_db_bind_text" alt="" coords="265,5,404,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="251,56,419,82">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5" title="lms_db_finalize_stmt" alt="" coords="253,106,416,133">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419" title="lms_db_reset_stmt" alt="" coords="259,157,411,184">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="477,56,624,82">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="468,157,633,184">
-b1f660c2d4925e78ca3ebe1d9828a8cd
\ No newline at end of file
+1181e757e104c50b137a29c78870b865
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_db_image.c</h1><a href="lightmediascanner__db__image_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keyword">struct </span>lms_db_image {
-<a name="l00007"></a>00007 sqlite3 *db;
-<a name="l00008"></a>00008 sqlite3_stmt *insert;
-<a name="l00009"></a>00009 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
-<a name="l00010"></a>00010 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
-<a name="l00011"></a>00011 };
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00016"></a>00016 _db_table_updater_images_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00017"></a>00017 <span class="keywordtype">char</span> *errmsg;
-<a name="l00018"></a>00018 <span class="keywordtype">int</span> r, ret;
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020 errmsg = NULL;
-<a name="l00021"></a>00021 r = sqlite3_exec(db,
-<a name="l00022"></a>00022 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS images ("</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"title TEXT, "</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"artist TEXT, "</span>
-<a name="l00026"></a>00026 <span class="stringliteral">"date INTEGER NOT NULL, "</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"width INTEGER NOT NULL, "</span>
-<a name="l00028"></a>00028 <span class="stringliteral">"height INTEGER NOT NULL, "</span>
-<a name="l00029"></a>00029 <span class="stringliteral">"orientation INTEGER NOT NULL, "</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"gps_lat REAL DEFAULT 0.0, "</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"gps_long REAL DEFAULT 0.0, "</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"gps_alt REAL DEFAULT 0.0"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">")"</span>,
-<a name="l00034"></a>00034 NULL, NULL, &errmsg);
-<a name="l00035"></a>00035 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00036"></a>00036 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images' table: %s\n"</span>, errmsg);
-<a name="l00037"></a>00037 sqlite3_free(errmsg);
-<a name="l00038"></a>00038 <span class="keywordflow">return</span> -1;
-<a name="l00039"></a>00039 }
-<a name="l00040"></a>00040
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_db_image.c</h1><a href="lightmediascanner__db__image_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_image {
+<a name="l00027"></a>00027 sqlite3 *db;
+<a name="l00028"></a>00028 sqlite3_stmt *insert;
+<a name="l00029"></a>00029 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_images_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037 <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 errmsg = NULL;
<a name="l00041"></a>00041 r = sqlite3_exec(db,
-<a name="l00042"></a>00042 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS images_date_idx ON images ("</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"date"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">")"</span>,
-<a name="l00045"></a>00045 NULL, NULL, &errmsg);
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00047"></a>00047 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images_date_idx' index: %s\n"</span>,
-<a name="l00048"></a>00048 errmsg);
-<a name="l00049"></a>00049 sqlite3_free(errmsg);
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> -2;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00054"></a>00054 <span class="stringliteral">"delete_images_on_files_deleted "</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" DELETE FROM images WHERE id = OLD.id; END;"</span>);
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00058"></a>00058 <span class="keywordflow">goto</span> done;
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00061"></a>00061 <span class="stringliteral">"delete_files_on_images_deleted "</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"DELETE ON images FOR EACH ROW BEGIN "</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 done:
-<a name="l00066"></a>00066 <span class="keywordflow">return</span> ret;
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_images[] = {
-<a name="l00070"></a>00070 _db_table_updater_images_0
-<a name="l00071"></a>00071 };
+<a name="l00042"></a>00042 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS images ("</span>
+<a name="l00043"></a>00043 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044 <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045 <span class="stringliteral">"artist TEXT, "</span>
+<a name="l00046"></a>00046 <span class="stringliteral">"date INTEGER NOT NULL, "</span>
+<a name="l00047"></a>00047 <span class="stringliteral">"width INTEGER NOT NULL, "</span>
+<a name="l00048"></a>00048 <span class="stringliteral">"height INTEGER NOT NULL, "</span>
+<a name="l00049"></a>00049 <span class="stringliteral">"orientation INTEGER NOT NULL, "</span>
+<a name="l00050"></a>00050 <span class="stringliteral">"gps_lat REAL DEFAULT 0.0, "</span>
+<a name="l00051"></a>00051 <span class="stringliteral">"gps_long REAL DEFAULT 0.0, "</span>
+<a name="l00052"></a>00052 <span class="stringliteral">"gps_alt REAL DEFAULT 0.0"</span>
+<a name="l00053"></a>00053 <span class="stringliteral">")"</span>,
+<a name="l00054"></a>00054 NULL, NULL, &errmsg);
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00056"></a>00056 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images' table: %s\n"</span>, errmsg);
+<a name="l00057"></a>00057 sqlite3_free(errmsg);
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> -1;
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 r = sqlite3_exec(db,
+<a name="l00062"></a>00062 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS images_date_idx ON images ("</span>
+<a name="l00063"></a>00063 <span class="stringliteral">"date"</span>
+<a name="l00064"></a>00064 <span class="stringliteral">")"</span>,
+<a name="l00065"></a>00065 NULL, NULL, &errmsg);
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00067"></a>00067 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'images_date_idx' index: %s\n"</span>,
+<a name="l00068"></a>00068 errmsg);
+<a name="l00069"></a>00069 sqlite3_free(errmsg);
+<a name="l00070"></a>00070 <span class="keywordflow">return</span> -2;
+<a name="l00071"></a>00071 }
<a name="l00072"></a>00072
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00075"></a>00075 _db_create_table_if_required(sqlite3 *db)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"images"</span>,
-<a name="l00078"></a>00078 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_images),
-<a name="l00079"></a>00079 _db_table_updater_images);
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00096"></a>00096 <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *
-<a name="l00097"></a><a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">00097</a> <a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi;
-<a name="l00100"></a>00100 <span class="keywordtype">void</span> *p;
+<a name="l00073"></a>00073 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00074"></a>00074 <span class="stringliteral">"delete_images_on_files_deleted "</span>
+<a name="l00075"></a>00075 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00076"></a>00076 <span class="stringliteral">" DELETE FROM images WHERE id = OLD.id; END;"</span>);
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00078"></a>00078 <span class="keywordflow">goto</span> done;
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00081"></a>00081 <span class="stringliteral">"delete_files_on_images_deleted "</span>
+<a name="l00082"></a>00082 <span class="stringliteral">"DELETE ON images FOR EACH ROW BEGIN "</span>
+<a name="l00083"></a>00083 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 done:
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> ret;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_images[] = {
+<a name="l00090"></a>00090 _db_table_updater_images_0
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00095"></a>00095 _db_create_table_if_required(sqlite3 *db)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"images"</span>,
+<a name="l00098"></a>00098 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_images),
+<a name="l00099"></a>00099 _db_table_updater_images);
+<a name="l00100"></a>00100 }
<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
-<a name="l00103"></a>00103 ldi = p;
-<a name="l00104"></a>00104 ldi->_references++;
-<a name="l00105"></a>00105 <span class="keywordflow">return</span> ldi;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (!db)
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> NULL;
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
-<a name="l00112"></a>00112 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
-<a name="l00113"></a>00113 <span class="keywordflow">return</span> NULL;
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 ldi = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>));
-<a name="l00117"></a>00117 ldi->_references = 1;
-<a name="l00118"></a>00118 ldi->db = db;
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldi) != 0) {
-<a name="l00121"></a>00121 <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(ldi);
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> NULL;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keywordflow">return</span> ldi;
-<a name="l00126"></a>00126 }
+<a name="l00116"></a>00116 <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *
+<a name="l00117"></a><a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">00117</a> <a class="code" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a>(sqlite3 *db)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi;
+<a name="l00120"></a>00120 <span class="keywordtype">void</span> *p;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
+<a name="l00123"></a>00123 ldi = p;
+<a name="l00124"></a>00124 ldi->_references++;
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> ldi;
+<a name="l00126"></a>00126 }
<a name="l00127"></a>00127
-<a name="l00140"></a>00140 <span class="keywordtype">int</span>
-<a name="l00141"></a><a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">00141</a> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (!ldi)
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> -1;
-<a name="l00145"></a>00145 <span class="keywordflow">if</span> (ldi->_is_started)
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> 0;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (!db)
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> NULL;
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00132"></a>00132 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> NULL;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 ldi = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>));
+<a name="l00137"></a>00137 ldi->_references = 1;
+<a name="l00138"></a>00138 ldi->db = db;
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldi) != 0) {
+<a name="l00141"></a>00141 <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(ldi);
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> NULL;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordflow">return</span> ldi;
+<a name="l00146"></a>00146 }
<a name="l00147"></a>00147
-<a name="l00148"></a>00148 ldi->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldi->db,
-<a name="l00149"></a>00149 <span class="stringliteral">"INSERT OR REPLACE INTO images ("</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"id, title, artist, date, width, height, orientation, "</span>
-<a name="l00151"></a>00151 <span class="stringliteral">"gps_lat, gps_long, gps_alt) VALUES ("</span>
-<a name="l00152"></a>00152 <span class="stringliteral">"?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"</span>);
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> (!ldi->insert)
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> -2;
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 ldi->_is_started = 1;
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> 0;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00172"></a>00172 <span class="keywordtype">int</span>
-<a name="l00173"></a><a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">00173</a> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keywordtype">int</span> r;
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!ldi)
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> -1;
-<a name="l00179"></a>00179 <span class="keywordflow">if</span> (ldi->_references == 0) {
-<a name="l00180"></a>00180 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_image_free(%p)\n"</span>, ldi);
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> -1;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 ldi->_references--;
-<a name="l00185"></a>00185 <span class="keywordflow">if</span> (ldi->_references > 0)
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> 0;
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (ldi->insert)
-<a name="l00189"></a>00189 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldi->insert, <span class="stringliteral">"insert"</span>);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldi->db, ldi);
-<a name="l00192"></a>00192 free(ldi);
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> r;
-<a name="l00195"></a>00195 }
+<a name="l00160"></a>00160 <span class="keywordtype">int</span>
+<a name="l00161"></a><a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">00161</a> <a class="code" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
+<a name="l00162"></a>00162 {
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (!ldi)
+<a name="l00164"></a>00164 <span class="keywordflow">return</span> -1;
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (ldi->_is_started)
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> 0;
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 ldi->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldi->db,
+<a name="l00169"></a>00169 <span class="stringliteral">"INSERT OR REPLACE INTO images ("</span>
+<a name="l00170"></a>00170 <span class="stringliteral">"id, title, artist, date, width, height, orientation, "</span>
+<a name="l00171"></a>00171 <span class="stringliteral">"gps_lat, gps_long, gps_alt) VALUES ("</span>
+<a name="l00172"></a>00172 <span class="stringliteral">"?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"</span>);
+<a name="l00173"></a>00173 <span class="keywordflow">if</span> (!ldi->insert)
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> -2;
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 ldi->_is_started = 1;
+<a name="l00177"></a>00177 <span class="keywordflow">return</span> 0;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179
+<a name="l00192"></a>00192 <span class="keywordtype">int</span>
+<a name="l00193"></a><a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">00193</a> <a class="code" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keywordtype">int</span> r;
<a name="l00196"></a>00196
-<a name="l00197"></a>00197 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00198"></a>00198 _db_insert(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 sqlite3_stmt *stmt;
-<a name="l00201"></a>00201 <span class="keywordtype">int</span> r, ret;
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 stmt = ldi->insert;
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a>);
-<a name="l00206"></a>00206 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00207"></a>00207 <span class="keywordflow">goto</span> done;
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00210"></a>00210 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00211"></a>00211 <span class="keywordflow">goto</span> done;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00215"></a>00215 <span class="keywordflow">goto</span> done;
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (!ldi)
+<a name="l00198"></a>00198 <span class="keywordflow">return</span> -1;
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> (ldi->_references == 0) {
+<a name="l00200"></a>00200 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_image_free(%p)\n"</span>, ldi);
+<a name="l00201"></a>00201 <span class="keywordflow">return</span> -1;
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 ldi->_references--;
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (ldi->_references > 0)
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> 0;
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keywordflow">if</span> (ldi->insert)
+<a name="l00209"></a>00209 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldi->insert, <span class="stringliteral">"insert"</span>);
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldi->db, ldi);
+<a name="l00212"></a>00212 free(ldi);
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="keywordflow">return</span> r;
+<a name="l00215"></a>00215 }
<a name="l00216"></a>00216
-<a name="l00217"></a>00217 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, info-><a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a>);
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00219"></a>00219 <span class="keywordflow">goto</span> done;
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 5, info-><a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a>);
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00223"></a>00223 <span class="keywordflow">goto</span> done;
+<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00218"></a>00218 _db_insert(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
+<a name="l00219"></a>00219 {
+<a name="l00220"></a>00220 sqlite3_stmt *stmt;
+<a name="l00221"></a>00221 <span class="keywordtype">int</span> r, ret;
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 stmt = ldi->insert;
<a name="l00224"></a>00224
-<a name="l00225"></a>00225 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-><a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a>);
+<a name="l00225"></a>00225 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a>);
<a name="l00226"></a>00226 <span class="keywordflow">if</span> (ret != 0)
<a name="l00227"></a>00227 <span class="keywordflow">goto</span> done;
<a name="l00228"></a>00228
-<a name="l00229"></a>00229 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-><a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a>);
+<a name="l00229"></a>00229 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
<a name="l00230"></a>00230 <span class="keywordflow">if</span> (ret != 0)
<a name="l00231"></a>00231 <span class="keywordflow">goto</span> done;
<a name="l00232"></a>00232
-<a name="l00233"></a>00233 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 8, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a>);
+<a name="l00233"></a>00233 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
<a name="l00234"></a>00234 <span class="keywordflow">if</span> (ret != 0)
<a name="l00235"></a>00235 <span class="keywordflow">goto</span> done;
<a name="l00236"></a>00236
-<a name="l00237"></a>00237 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 9, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a>);
+<a name="l00237"></a>00237 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 4, info-><a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a>);
<a name="l00238"></a>00238 <span class="keywordflow">if</span> (ret != 0)
<a name="l00239"></a>00239 <span class="keywordflow">goto</span> done;
<a name="l00240"></a>00240
-<a name="l00241"></a>00241 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 10, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a>);
+<a name="l00241"></a>00241 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 5, info-><a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a>);
<a name="l00242"></a>00242 <span class="keywordflow">if</span> (ret != 0)
<a name="l00243"></a>00243 <span class="keywordflow">goto</span> done;
<a name="l00244"></a>00244
-<a name="l00245"></a>00245 r = sqlite3_step(stmt);
-<a name="l00246"></a>00246 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00247"></a>00247 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert image info: %s\n"</span>,
-<a name="l00248"></a>00248 sqlite3_errmsg(ldi->db));
-<a name="l00249"></a>00249 ret = -11;
-<a name="l00250"></a>00250 <span class="keywordflow">goto</span> done;
-<a name="l00251"></a>00251 }
+<a name="l00245"></a>00245 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 6, info-><a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a>);
+<a name="l00246"></a>00246 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00247"></a>00247 <span class="keywordflow">goto</span> done;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 7, info-><a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a>);
+<a name="l00250"></a>00250 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00251"></a>00251 <span class="keywordflow">goto</span> done;
<a name="l00252"></a>00252
-<a name="l00253"></a>00253 ret = 0;
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 done:
-<a name="l00256"></a>00256 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> ret;
-<a name="l00259"></a>00259 }
+<a name="l00253"></a>00253 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 8, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a>);
+<a name="l00254"></a>00254 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00255"></a>00255 <span class="keywordflow">goto</span> done;
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 9, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a>);
+<a name="l00258"></a>00258 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00259"></a>00259 <span class="keywordflow">goto</span> done;
<a name="l00260"></a>00260
-<a name="l00272"></a>00272 <span class="keywordtype">int</span>
-<a name="l00273"></a><a class="code" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">00273</a> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
-<a name="l00274"></a>00274 {
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (!ldi)
-<a name="l00276"></a>00276 <span class="keywordflow">return</span> -1;
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (!info)
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> -2;
-<a name="l00279"></a>00279 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a> < 1)
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> -3;
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> _db_insert(ldi, info);
-<a name="l00283"></a>00283 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00261"></a>00261 ret = <a class="code" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a>(stmt, 10, info-><a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a>);
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00263"></a>00263 <span class="keywordflow">goto</span> done;
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 r = sqlite3_step(stmt);
+<a name="l00266"></a>00266 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00267"></a>00267 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert image info: %s\n"</span>,
+<a name="l00268"></a>00268 sqlite3_errmsg(ldi->db));
+<a name="l00269"></a>00269 ret = -11;
+<a name="l00270"></a>00270 <span class="keywordflow">goto</span> done;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 ret = 0;
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 done:
+<a name="l00276"></a>00276 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="keywordflow">return</span> ret;
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280
+<a name="l00292"></a>00292 <span class="keywordtype">int</span>
+<a name="l00293"></a><a class="code" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">00293</a> <a class="code" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a>(<a class="code" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, <span class="keyword">struct</span> <a class="code" href="structlms__image__info.html">lms_image_info</a> *info)
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295 <span class="keywordflow">if</span> (!ldi)
+<a name="l00296"></a>00296 <span class="keywordflow">return</span> -1;
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (!info)
+<a name="l00298"></a>00298 <span class="keywordflow">return</span> -2;
+<a name="l00299"></a>00299 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a> < 1)
+<a name="l00300"></a>00300 <span class="keywordflow">return</span> -3;
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <span class="keywordflow">return</span> _db_insert(ldi, info);
+<a name="l00303"></a>00303 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_image.c File Reference</h1><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<code>#include <stdlib.h></code><br>
<code>#include <stdio.h></code><br>
<p>
-Include dependency graph for lightmediascanner_db_image.c:<p><center><img src="lightmediascanner__db__image_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_image.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_image.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__image_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_image.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_image.c_map">
-<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="300,107,449,133"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="279,56,471,83"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="521,107,689,133"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="527,157,684,184"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="779,107,907,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="740,157,945,184"></map>
+<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265"></map>
+</div>
<p>
<a href="lightmediascanner__db__image_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00273">273</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db_8h-source.html#l00068">lms_image_info::id</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__image_8c-source.html#l00293">293</a> of file <a class="el" href="lightmediascanner__db__image_8c-source.html">lightmediascanner_db_image.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00068">lms_image_info::id</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:56 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="300,107,449,133">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="279,56,471,83">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="521,107,689,133">
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="527,157,684,184">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="779,107,907,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="740,157,945,184">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265">
-e083e2e3773d3d81a27a5260aa936185
\ No newline at end of file
+1fb23785d53ee973dde72b349e7344b7
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_db_playlist.c</h1><a href="lightmediascanner__db__playlist_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keyword">struct </span>lms_db_playlist {
-<a name="l00007"></a>00007 sqlite3 *db;
-<a name="l00008"></a>00008 sqlite3_stmt *insert;
-<a name="l00009"></a>00009 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
-<a name="l00010"></a>00010 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
-<a name="l00011"></a>00011 };
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00016"></a>00016 _db_table_updater_playlists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00017"></a>00017 <span class="keywordtype">char</span> *errmsg;
-<a name="l00018"></a>00018 <span class="keywordtype">int</span> r, ret;
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020 errmsg = NULL;
-<a name="l00021"></a>00021 r = sqlite3_exec(db,
-<a name="l00022"></a>00022 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS playlists ("</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"title TEXT, "</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"n_entries INTEGER NOT NULL"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">")"</span>,
-<a name="l00027"></a>00027 NULL, NULL, &errmsg);
-<a name="l00028"></a>00028 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00029"></a>00029 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'playlists' table: %s\n"</span>,
-<a name="l00030"></a>00030 errmsg);
-<a name="l00031"></a>00031 sqlite3_free(errmsg);
-<a name="l00032"></a>00032 <span class="keywordflow">return</span> -1;
-<a name="l00033"></a>00033 }
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_db_playlist.c</h1><a href="lightmediascanner__db__playlist_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_playlist {
+<a name="l00027"></a>00027 sqlite3 *db;
+<a name="l00028"></a>00028 sqlite3_stmt *insert;
+<a name="l00029"></a>00029 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
<a name="l00034"></a>00034
-<a name="l00035"></a>00035 r = sqlite3_exec(db,
-<a name="l00036"></a>00036 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS playlists_title_idx ON "</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"playlists (title)"</span>,
-<a name="l00038"></a>00038 NULL, NULL, &errmsg);
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00040"></a>00040 fprintf(stderr,
-<a name="l00041"></a>00041 <span class="stringliteral">"ERROR: could not create 'playlists_title_idx' index: %s\n"</span>,
-<a name="l00042"></a>00042 errmsg);
-<a name="l00043"></a>00043 sqlite3_free(errmsg);
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> -2;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00048"></a>00048 <span class="stringliteral">"delete_playlists_on_files_deleted "</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" DELETE FROM playlists WHERE id = OLD.id; END;"</span>);
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00052"></a>00052 <span class="keywordflow">goto</span> done;
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00055"></a>00055 <span class="stringliteral">"delete_files_on_playlists_deleted "</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"DELETE ON playlists FOR EACH ROW BEGIN "</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 done:
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> ret;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_playlists[] = {
-<a name="l00064"></a>00064 _db_table_updater_playlists_0
-<a name="l00065"></a>00065 };
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_playlists_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037 <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 errmsg = NULL;
+<a name="l00041"></a>00041 r = sqlite3_exec(db,
+<a name="l00042"></a>00042 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS playlists ("</span>
+<a name="l00043"></a>00043 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044 <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045 <span class="stringliteral">"n_entries INTEGER NOT NULL"</span>
+<a name="l00046"></a>00046 <span class="stringliteral">")"</span>,
+<a name="l00047"></a>00047 NULL, NULL, &errmsg);
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'playlists' table: %s\n"</span>,
+<a name="l00050"></a>00050 errmsg);
+<a name="l00051"></a>00051 sqlite3_free(errmsg);
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> -1;
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 r = sqlite3_exec(db,
+<a name="l00056"></a>00056 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS playlists_title_idx ON "</span>
+<a name="l00057"></a>00057 <span class="stringliteral">"playlists (title)"</span>,
+<a name="l00058"></a>00058 NULL, NULL, &errmsg);
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00060"></a>00060 fprintf(stderr,
+<a name="l00061"></a>00061 <span class="stringliteral">"ERROR: could not create 'playlists_title_idx' index: %s\n"</span>,
+<a name="l00062"></a>00062 errmsg);
+<a name="l00063"></a>00063 sqlite3_free(errmsg);
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> -2;
+<a name="l00065"></a>00065 }
<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00069"></a>00069 _db_create_table_if_required(sqlite3 *db)
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"playlists"</span>,
-<a name="l00072"></a>00072 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_playlists),
-<a name="l00073"></a>00073 _db_table_updater_playlists);
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00090"></a>00090 <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *
-<a name="l00091"></a><a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">00091</a> <a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp;
-<a name="l00094"></a>00094 <span class="keywordtype">void</span> *p;
+<a name="l00067"></a>00067 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00068"></a>00068 <span class="stringliteral">"delete_playlists_on_files_deleted "</span>
+<a name="l00069"></a>00069 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00070"></a>00070 <span class="stringliteral">" DELETE FROM playlists WHERE id = OLD.id; END;"</span>);
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00072"></a>00072 <span class="keywordflow">goto</span> done;
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00075"></a>00075 <span class="stringliteral">"delete_files_on_playlists_deleted "</span>
+<a name="l00076"></a>00076 <span class="stringliteral">"DELETE ON playlists FOR EACH ROW BEGIN "</span>
+<a name="l00077"></a>00077 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 done:
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> ret;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_playlists[] = {
+<a name="l00084"></a>00084 _db_table_updater_playlists_0
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00089"></a>00089 _db_create_table_if_required(sqlite3 *db)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"playlists"</span>,
+<a name="l00092"></a>00092 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_playlists),
+<a name="l00093"></a>00093 _db_table_updater_playlists);
+<a name="l00094"></a>00094 }
<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
-<a name="l00097"></a>00097 ldp = p;
-<a name="l00098"></a>00098 ldp->_references++;
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> ldp;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (!db)
-<a name="l00103"></a>00103 <span class="keywordflow">return</span> NULL;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
-<a name="l00106"></a>00106 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> NULL;
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 ldp = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>));
-<a name="l00111"></a>00111 ldp->_references = 1;
-<a name="l00112"></a>00112 ldp->db = db;
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldp) != 0) {
-<a name="l00115"></a>00115 <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(ldp);
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> NULL;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> ldp;
-<a name="l00120"></a>00120 }
+<a name="l00110"></a>00110 <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *
+<a name="l00111"></a><a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">00111</a> <a class="code" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a>(sqlite3 *db)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp;
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> *p;
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
+<a name="l00117"></a>00117 ldp = p;
+<a name="l00118"></a>00118 ldp->_references++;
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> ldp;
+<a name="l00120"></a>00120 }
<a name="l00121"></a>00121
-<a name="l00134"></a>00134 <span class="keywordtype">int</span>
-<a name="l00135"></a><a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">00135</a> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (!ldp)
-<a name="l00138"></a>00138 <span class="keywordflow">return</span> -1;
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (ldp->_is_started)
-<a name="l00140"></a>00140 <span class="keywordflow">return</span> 0;
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (!db)
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> NULL;
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00126"></a>00126 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> NULL;
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 ldp = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>));
+<a name="l00131"></a>00131 ldp->_references = 1;
+<a name="l00132"></a>00132 ldp->db = db;
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldp) != 0) {
+<a name="l00135"></a>00135 <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(ldp);
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> NULL;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> ldp;
+<a name="l00140"></a>00140 }
<a name="l00141"></a>00141
-<a name="l00142"></a>00142 ldp->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldp->db,
-<a name="l00143"></a>00143 <span class="stringliteral">"INSERT OR REPLACE INTO playlists (id, title, n_entries) "</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"VALUES (?, ?, ?)"</span>);
-<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!ldp->insert)
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> -2;
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 ldp->_is_started = 1;
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> 0;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00164"></a>00164 <span class="keywordtype">int</span>
-<a name="l00165"></a><a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">00165</a> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 <span class="keywordtype">int</span> r;
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (!ldp)
-<a name="l00170"></a>00170 <span class="keywordflow">return</span> -1;
-<a name="l00171"></a>00171 <span class="keywordflow">if</span> (ldp->_references == 0) {
-<a name="l00172"></a>00172 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_playlist_free(%p)\n"</span>, ldp);
-<a name="l00173"></a>00173 <span class="keywordflow">return</span> -1;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 ldp->_references--;
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (ldp->_references > 0)
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> 0;
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 <span class="keywordflow">if</span> (ldp->insert)
-<a name="l00181"></a>00181 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldp->insert, <span class="stringliteral">"insert"</span>);
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldp->db, ldp);
-<a name="l00184"></a>00184 free(ldp);
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> r;
-<a name="l00187"></a>00187 }
+<a name="l00154"></a>00154 <span class="keywordtype">int</span>
+<a name="l00155"></a><a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">00155</a> <a class="code" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keywordflow">if</span> (!ldp)
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> -1;
+<a name="l00159"></a>00159 <span class="keywordflow">if</span> (ldp->_is_started)
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> 0;
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 ldp->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldp->db,
+<a name="l00163"></a>00163 <span class="stringliteral">"INSERT OR REPLACE INTO playlists (id, title, n_entries) "</span>
+<a name="l00164"></a>00164 <span class="stringliteral">"VALUES (?, ?, ?)"</span>);
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (!ldp->insert)
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> -2;
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 ldp->_is_started = 1;
+<a name="l00169"></a>00169 <span class="keywordflow">return</span> 0;
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171
+<a name="l00184"></a>00184 <span class="keywordtype">int</span>
+<a name="l00185"></a><a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">00185</a> <a class="code" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)
+<a name="l00186"></a>00186 {
+<a name="l00187"></a>00187 <span class="keywordtype">int</span> r;
<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00190"></a>00190 _db_insert(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 sqlite3_stmt *stmt;
-<a name="l00193"></a>00193 <span class="keywordtype">int</span> r, ret;
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 stmt = ldp->insert;
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a>);
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00199"></a>00199 <span class="keywordflow">goto</span> done;
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00203"></a>00203 <span class="keywordflow">goto</span> done;
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, info-><a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a>);
-<a name="l00206"></a>00206 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00207"></a>00207 <span class="keywordflow">goto</span> done;
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (!ldp)
+<a name="l00190"></a>00190 <span class="keywordflow">return</span> -1;
+<a name="l00191"></a>00191 <span class="keywordflow">if</span> (ldp->_references == 0) {
+<a name="l00192"></a>00192 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_playlist_free(%p)\n"</span>, ldp);
+<a name="l00193"></a>00193 <span class="keywordflow">return</span> -1;
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 ldp->_references--;
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (ldp->_references > 0)
+<a name="l00198"></a>00198 <span class="keywordflow">return</span> 0;
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 <span class="keywordflow">if</span> (ldp->insert)
+<a name="l00201"></a>00201 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldp->insert, <span class="stringliteral">"insert"</span>);
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldp->db, ldp);
+<a name="l00204"></a>00204 free(ldp);
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keywordflow">return</span> r;
+<a name="l00207"></a>00207 }
<a name="l00208"></a>00208
-<a name="l00209"></a>00209 r = sqlite3_step(stmt);
-<a name="l00210"></a>00210 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00211"></a>00211 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert playlist info: %s\n"</span>,
-<a name="l00212"></a>00212 sqlite3_errmsg(ldp->db));
-<a name="l00213"></a>00213 ret = -4;
-<a name="l00214"></a>00214 <span class="keywordflow">goto</span> done;
-<a name="l00215"></a>00215 }
+<a name="l00209"></a>00209 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00210"></a>00210 _db_insert(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 sqlite3_stmt *stmt;
+<a name="l00213"></a>00213 <span class="keywordtype">int</span> r, ret;
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215 stmt = ldp->insert;
<a name="l00216"></a>00216
-<a name="l00217"></a>00217 ret = 0;
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 done:
-<a name="l00220"></a>00220 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <span class="keywordflow">return</span> ret;
-<a name="l00223"></a>00223 }
+<a name="l00217"></a>00217 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a>);
+<a name="l00218"></a>00218 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00219"></a>00219 <span class="keywordflow">goto</span> done;
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00222"></a>00222 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00223"></a>00223 <span class="keywordflow">goto</span> done;
<a name="l00224"></a>00224
-<a name="l00236"></a>00236 <span class="keywordtype">int</span>
-<a name="l00237"></a><a class="code" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">00237</a> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (!ldp)
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> -1;
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (!info)
-<a name="l00242"></a>00242 <span class="keywordflow">return</span> -2;
-<a name="l00243"></a>00243 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a> < 1)
-<a name="l00244"></a>00244 <span class="keywordflow">return</span> -3;
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> _db_insert(ldp, info);
-<a name="l00247"></a>00247 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00225"></a>00225 ret = <a class="code" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a>(stmt, 3, info-><a class="code" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a>);
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00227"></a>00227 <span class="keywordflow">goto</span> done;
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 r = sqlite3_step(stmt);
+<a name="l00230"></a>00230 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00231"></a>00231 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert playlist info: %s\n"</span>,
+<a name="l00232"></a>00232 sqlite3_errmsg(ldp->db));
+<a name="l00233"></a>00233 ret = -4;
+<a name="l00234"></a>00234 <span class="keywordflow">goto</span> done;
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 ret = 0;
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 done:
+<a name="l00240"></a>00240 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> ret;
+<a name="l00243"></a>00243 }
+<a name="l00244"></a>00244
+<a name="l00256"></a>00256 <span class="keywordtype">int</span>
+<a name="l00257"></a><a class="code" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">00257</a> <a class="code" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a>(<a class="code" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, <span class="keyword">struct</span> <a class="code" href="structlms__playlist__info.html">lms_playlist_info</a> *info)
+<a name="l00258"></a>00258 {
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!ldp)
+<a name="l00260"></a>00260 <span class="keywordflow">return</span> -1;
+<a name="l00261"></a>00261 <span class="keywordflow">if</span> (!info)
+<a name="l00262"></a>00262 <span class="keywordflow">return</span> -2;
+<a name="l00263"></a>00263 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a> < 1)
+<a name="l00264"></a>00264 <span class="keywordflow">return</span> -3;
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="keywordflow">return</span> _db_insert(ldp, info);
+<a name="l00267"></a>00267 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_playlist.c File Reference</h1><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<code>#include <stdlib.h></code><br>
<code>#include <stdio.h></code><br>
<p>
-Include dependency graph for lightmediascanner_db_playlist.c:<p><center><img src="lightmediascanner__db__playlist_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_playlist.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_playlist.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__playlist_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_playlist.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_playlist.c_map">
-<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="308,107,457,133"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="287,56,479,83"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="529,107,697,133"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="535,157,692,184"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="787,107,915,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="748,157,953,184"></map>
+<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265"></map>
+</div>
<p>
<a href="lightmediascanner__db__playlist_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00237">237</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db_8h-source.html#l00120">lms_playlist_info::id</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00257">257</a> of file <a class="el" href="lightmediascanner__db__playlist_8c-source.html">lightmediascanner_db_playlist.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00120">lms_playlist_info::id</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:56 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="308,107,457,133">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="287,56,479,83">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="529,107,697,133">
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="535,157,692,184">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="787,107,915,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="748,157,953,184">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265">
-7f27c971bdef77eda7ac4a4e6b647a3a
\ No newline at end of file
+f4d4f52611abf5be20a7b4240c550d8d
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_db_private.h</h1><a href="lightmediascanner__db__private_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_DB_PRIVATE_H_</span>
<a name="l00022"></a><a class="code" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_ 1</span>
<a name="l00049"></a>00049 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00050"></a>00050 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#46e6e318ea9bb4a7ffdfe40c842da4e7">lms_db_table_version_set</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
<a name="l00051"></a>00051
-<a name="l00052"></a><a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">00052</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a>)(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run);
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a>)(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run);
<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 5);
-<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 4);
+<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#9bca88ae79959baff3accee8ce10b558">lms_db_table_update</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <span class="keyword">const</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 5);
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> last_version, <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 4);
<a name="l00056"></a>00056
<a name="l00057"></a><a class="code" href="structlms__db__cache__entry.html">00057</a> <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> {
<a name="l00058"></a><a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">00058</a> <span class="keyword">const</span> sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>;
<a name="l00091"></a>00091
<a name="l00092"></a>00092
<a name="l00093"></a>00093 <span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_DB_PRIVATE_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_private.h File Reference</h1><code>#include <sqlite3.h></code><br>
<code>#include <sys/types.h></code><br>
<code>#include "<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>"</code><br>
<p>
-Include dependency graph for lightmediascanner_db_private.h:<p><center><img src="lightmediascanner__db__private_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_private.h_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_private.h:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_private.h_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_private.h_map">
-<area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="284,107,452,133"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="541,107,669,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="503,157,708,184"></map>
+<area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="180,84,380,111"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="232,162,387,188"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="411,162,664,188"></map>
+</div>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__db__private_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_private.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_private.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_private.hdep_map">
-<area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="301,5,504,32"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="292,56,513,83"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="284,107,521,133"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="291,157,515,184"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="288,208,517,235"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="292,259,513,285"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="297,309,508,336"></map>
+<area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="5,84,251,110"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="275,84,539,110"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="563,84,848,110"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="872,84,1141,110"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1165,84,1440,110"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1464,84,1728,110"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="1752,84,2008,110"></map>
+</div>
<p>
<a href="lightmediascanner__db__private_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#1c57f68c64069575a36252816929e335">lms_db_table_version_set</a> (sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#3dcf825514196befd0a4575e4afd0b58">lms_db_table_update</a> (sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#455c0e5d62094b01fc935c5db8f07352">lms_db_table_update_if_required</a> (sqlite3 *db, const char *table, unsigned int last_version, <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> *updaters) GNUC_NON_NULL(1</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#f2c9e9154fff8b335c4fd5693fe45aa6">lms_db_cache_add</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#617b14b976ba1cde9fe639800f2eae71">lms_db_get_files</a> (sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1</td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> (sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> )(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)</td></tr>
</table>
<hr><h2>Define Documentation</h2>
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00512">512</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">532</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="7fd514b582578c18a25cdbf6c561243c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_blob" ref="7fd514b582578c18a25cdbf6c561243c" args="(sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00763">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00168">168</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00783">lms_db_get_files()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="9e78297037179998924354e73ca69349"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_double" ref="9e78297037179998924354e73ca69349" args="(sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00231">231</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00251">251</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="37815f859116b46089bea4ba84bb23d2"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int" ref="37815f859116b46089bea4ba84bb23d2" args="(sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00212">212</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00232">232</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="bbb18d7cc44f7e363c0f240849d72c31"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int64" ref="bbb18d7cc44f7e363c0f240849d72c31" args="(sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00171">171</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00191">191</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="cd7006f0271b9a47937dc2d2ae5480fe"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_int64_or_null" ref="cd7006f0271b9a47937dc2d2ae5480fe" args="(sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00190">190</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00210">210</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="14d56e02624ad6130bc59ae9bb950ac3"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_bind_text" ref="14d56e02624ad6130bc59ae9bb950ac3" args="(sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00125">125</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f2c9e9154fff8b335c4fd5693fe45aa6"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_add" ref="f2c9e9154fff8b335c4fd5693fe45aa6" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00526">526</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00506">506</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="297,5,436,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="487,5,609,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="349,5,517,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="567,5,713,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00711">711</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00691">691</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="331,5,499,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="548,5,695,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00553">553</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00533">533</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="339,5,507,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="556,5,703,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00580">580</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00560">560</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="271,5,409,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="460,5,583,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="309,5,477,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="527,5,673,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00776">776</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00756">756</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="247,5,385,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="436,5,559,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="285,5,453,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="503,5,649,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00666">666</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00646">646</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="284,5,423,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="473,5,596,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00741">741</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00721">721</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="279,5,417,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="468,5,591,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00622">622</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00101">lms_db_compile_stmt()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00602">602</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00081">lms_db_compile_stmt()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="289,5,428,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="479,5,601,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="333,5,501,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="551,5,697,32"></map>
+</div>
</div>
</div><p>
<td class="paramtype">sqlite3 * </td>
<td class="paramname"> <em>db</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00455">455</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00475">475</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f47d604dd4e11f81be1ad045ee723789"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_create_trigger_if_not_exists" ref="f47d604dd4e11f81be1ad045ee723789" args="(sqlite3 *db, const char *sql) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00539">539</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">559</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="2660f629fbdf3d4144a6143fee837a27"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_finalize_stmt" ref="2660f629fbdf3d4144a6143fee837a27" args="(sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<td class="paramtype">sqlite3_stmt * </td>
<td class="paramname"> <em>stmt</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00128">128</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00036">sqlite3_clear_bindings()</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00270">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00304">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__db__common_8c-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner__db__common_8c-source.html">lightmediascanner_db_common.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db__common_8c-source.html#l00016">sqlite3_clear_bindings()</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00250">lms_db_table_version_get()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00284">lms_db_table_version_set()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png" border="0" usemap="#lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph_map" alt=""></center>
<map name="lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph_map">
-<area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32"></map>
+<area shape="rect" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="207,5,372,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> * </td>
+ <td class="paramtype">const <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> * </td>
<td class="paramname"> <em>updaters</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> * </td>
+ <td class="paramtype"><a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> * </td>
<td class="paramname"> <em>updaters</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="7964337689117d7dc6fb1822378b5848"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_updater_t" ref="7964337689117d7dc6fb1822378b5848" args="(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)" -->
+<a class="anchor" name="31db275bbea4b156c8b4493dac818b73"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_updater_t" ref="31db275bbea4b156c8b4493dac818b73" args=")(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">int int int typedef int(*) <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a>(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) </td>
+ <td class="memname">int int int typedef int(* <a class="el" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a>)(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00052">52</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:56 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="297,5,436,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="487,5,609,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="349,5,517,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="567,5,713,32">
-597cf289a37dec2c079a7e40c848ec2c
\ No newline at end of file
+b96aba35f641da6d6fa5e565f8871165
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="279,5,417,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="468,5,591,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32">
-4140a991699f501c103f1dd52e357650
\ No newline at end of file
+34eee98bda25d4810e29980eb7072e92
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="339,5,507,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="556,5,703,32">
-5a19337cd92bc81a6609fb3efc0944b8
\ No newline at end of file
+44282c967d400f024202493a8b3e315a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="247,5,385,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="436,5,559,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="285,5,453,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="503,5,649,32">
-3cc06df5622a01305fd152e7404ce386
\ No newline at end of file
+74e606f761af9e0a2d1004255979eb6d
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="271,5,409,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="460,5,583,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="309,5,477,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="527,5,673,32">
-48dd492320b5d2c740f331d4213ef1e6
\ No newline at end of file
+515ab1a33489c751c85b01de97550c79
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="289,5,428,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="479,5,601,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="333,5,501,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="551,5,697,32">
-42099300ab356ee9f37a5189393d9a29
\ No newline at end of file
+94afa576b45f5739085ea74ba95f1965
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="287,5,425,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="476,5,599,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="331,5,499,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="548,5,695,32">
-11ab49ab26e02addb26e1495f2117883
\ No newline at end of file
+e1abe9cd4e4c9e93a33f6c154ab760ea
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="301,5,504,32">
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="292,56,513,83">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="284,107,521,133">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="291,157,515,184">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="288,208,517,235">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="292,259,513,285">
-<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="297,309,508,336">
+<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="5,84,251,110">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="275,84,539,110">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="563,84,848,110">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="872,84,1141,110">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1165,84,1440,110">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1464,84,1728,110">
+<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="1752,84,2008,110">
-022f4e74638a0b634545ff86621129c8
\ No newline at end of file
+95c4fc01b991a66fa22d60da57e297b5
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="284,107,452,133">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="541,107,669,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="503,157,708,184">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="180,84,380,111">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="232,162,387,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="411,162,664,188">
-1f30ce8e217e3bccc71953d3836e1a9f
\ No newline at end of file
+cd3b1b4ae663ffa9c102ffe5c3e03c22
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="284,5,423,32">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="473,5,596,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b" title="lms_db_compile_stmt" alt="" coords="325,5,493,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="543,5,689,32">
-70af470fb9b373dbdde441f9c228fdac
\ No newline at end of file
+2b7283a532f18438d2ccb3a033bbfb6a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="207,5,372,32">
-0559150039d6a3e46b15f46277f3053f
\ No newline at end of file
+2c52b54acca396aaa52a1189c009bcdd
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_db_video.c</h1><a href="lightmediascanner__db__video_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00005"></a>00005
-<a name="l00006"></a>00006 <span class="keyword">struct </span>lms_db_video {
-<a name="l00007"></a>00007 sqlite3 *db;
-<a name="l00008"></a>00008 sqlite3_stmt *insert;
-<a name="l00009"></a>00009 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
-<a name="l00010"></a>00010 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
-<a name="l00011"></a>00011 };
-<a name="l00012"></a>00012
-<a name="l00013"></a>00013 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00016"></a>00016 _db_table_updater_videos_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
-<a name="l00017"></a>00017 <span class="keywordtype">char</span> *errmsg;
-<a name="l00018"></a>00018 <span class="keywordtype">int</span> r, ret;
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020 errmsg = NULL;
-<a name="l00021"></a>00021 r = sqlite3_exec(db,
-<a name="l00022"></a>00022 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS videos ("</span>
-<a name="l00023"></a>00023 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"title TEXT, "</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"artist TEXT"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">")"</span>,
-<a name="l00027"></a>00027 NULL, NULL, &errmsg);
-<a name="l00028"></a>00028 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00029"></a>00029 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'videos' table: %s\n"</span>, errmsg);
-<a name="l00030"></a>00030 sqlite3_free(errmsg);
-<a name="l00031"></a>00031 <span class="keywordflow">return</span> -1;
-<a name="l00032"></a>00032 }
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 r = sqlite3_exec(db,
-<a name="l00035"></a>00035 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_title_idx ON videos ("</span>
-<a name="l00036"></a>00036 <span class="stringliteral">"title"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">")"</span>,
-<a name="l00038"></a>00038 NULL, NULL, &errmsg);
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00040"></a>00040 fprintf(stderr,
-<a name="l00041"></a>00041 <span class="stringliteral">"ERROR: could not create 'videos_title_idx' index: %s\n"</span>,
-<a name="l00042"></a>00042 errmsg);
-<a name="l00043"></a>00043 sqlite3_free(errmsg);
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> -2;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 r = sqlite3_exec(db,
-<a name="l00048"></a>00048 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_artist_idx ON videos ("</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"artist"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">")"</span>,
-<a name="l00051"></a>00051 NULL, NULL, &errmsg);
-<a name="l00052"></a>00052 <span class="keywordflow">if</span> (r != SQLITE_OK) {
-<a name="l00053"></a>00053 fprintf(stderr,
-<a name="l00054"></a>00054 <span class="stringliteral">"ERROR: could not create 'videos_artist_idx' index: %s\n"</span>,
-<a name="l00055"></a>00055 errmsg);
-<a name="l00056"></a>00056 sqlite3_free(errmsg);
-<a name="l00057"></a>00057 <span class="keywordflow">return</span> -3;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00061"></a>00061 <span class="stringliteral">"delete_videos_on_files_deleted "</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" DELETE FROM videos WHERE id = OLD.id; END;"</span>);
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00065"></a>00065 <span class="keywordflow">goto</span> done;
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_db_video.c</h1><a href="lightmediascanner__db__video_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <stdio.h></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">struct </span>lms_db_video {
+<a name="l00027"></a>00027 sqlite3 *db;
+<a name="l00028"></a>00028 sqlite3_stmt *insert;
+<a name="l00029"></a>00029 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _references;
+<a name="l00030"></a>00030 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _is_started:1;
+<a name="l00031"></a>00031 };
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> _cache = {0, NULL};
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00036"></a>00036 _db_table_updater_videos_0(sqlite3 *db, <span class="keyword">const</span> <span class="keywordtype">char</span> *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_version, <span class="keywordtype">int</span> is_last_run) {
+<a name="l00037"></a>00037 <span class="keywordtype">char</span> *errmsg;
+<a name="l00038"></a>00038 <span class="keywordtype">int</span> r, ret;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 errmsg = NULL;
+<a name="l00041"></a>00041 r = sqlite3_exec(db,
+<a name="l00042"></a>00042 <span class="stringliteral">"CREATE TABLE IF NOT EXISTS videos ("</span>
+<a name="l00043"></a>00043 <span class="stringliteral">"id INTEGER PRIMARY KEY, "</span>
+<a name="l00044"></a>00044 <span class="stringliteral">"title TEXT, "</span>
+<a name="l00045"></a>00045 <span class="stringliteral">"artist TEXT"</span>
+<a name="l00046"></a>00046 <span class="stringliteral">")"</span>,
+<a name="l00047"></a>00047 NULL, NULL, &errmsg);
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00049"></a>00049 fprintf(stderr, <span class="stringliteral">"ERROR: could not create 'videos' table: %s\n"</span>, errmsg);
+<a name="l00050"></a>00050 sqlite3_free(errmsg);
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> -1;
+<a name="l00052"></a>00052 }
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 r = sqlite3_exec(db,
+<a name="l00055"></a>00055 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_title_idx ON videos ("</span>
+<a name="l00056"></a>00056 <span class="stringliteral">"title"</span>
+<a name="l00057"></a>00057 <span class="stringliteral">")"</span>,
+<a name="l00058"></a>00058 NULL, NULL, &errmsg);
+<a name="l00059"></a>00059 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00060"></a>00060 fprintf(stderr,
+<a name="l00061"></a>00061 <span class="stringliteral">"ERROR: could not create 'videos_title_idx' index: %s\n"</span>,
+<a name="l00062"></a>00062 errmsg);
+<a name="l00063"></a>00063 sqlite3_free(errmsg);
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> -2;
+<a name="l00065"></a>00065 }
<a name="l00066"></a>00066
-<a name="l00067"></a>00067 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
-<a name="l00068"></a>00068 <span class="stringliteral">"delete_files_on_videos_deleted "</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"DELETE ON videos FOR EACH ROW BEGIN "</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 done:
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> ret;
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">lms_db_table_updater_t</a> _db_table_updater_videos[] = {
-<a name="l00077"></a>00077 _db_table_updater_videos_0
-<a name="l00078"></a>00078 };
+<a name="l00067"></a>00067 r = sqlite3_exec(db,
+<a name="l00068"></a>00068 <span class="stringliteral">"CREATE INDEX IF NOT EXISTS videos_artist_idx ON videos ("</span>
+<a name="l00069"></a>00069 <span class="stringliteral">"artist"</span>
+<a name="l00070"></a>00070 <span class="stringliteral">")"</span>,
+<a name="l00071"></a>00071 NULL, NULL, &errmsg);
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (r != SQLITE_OK) {
+<a name="l00073"></a>00073 fprintf(stderr,
+<a name="l00074"></a>00074 <span class="stringliteral">"ERROR: could not create 'videos_artist_idx' index: %s\n"</span>,
+<a name="l00075"></a>00075 errmsg);
+<a name="l00076"></a>00076 sqlite3_free(errmsg);
+<a name="l00077"></a>00077 <span class="keywordflow">return</span> -3;
+<a name="l00078"></a>00078 }
<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00082"></a>00082 _db_create_table_if_required(sqlite3 *db)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"videos"</span>,
-<a name="l00085"></a>00085 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_videos),
-<a name="l00086"></a>00086 _db_table_updater_videos);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00103"></a>00103 <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *
-<a name="l00104"></a><a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">00104</a> <a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv;
-<a name="l00107"></a>00107 <span class="keywordtype">void</span> *p;
+<a name="l00080"></a>00080 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00081"></a>00081 <span class="stringliteral">"delete_videos_on_files_deleted "</span>
+<a name="l00082"></a>00082 <span class="stringliteral">"DELETE ON files FOR EACH ROW BEGIN "</span>
+<a name="l00083"></a>00083 <span class="stringliteral">" DELETE FROM videos WHERE id = OLD.id; END;"</span>);
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00085"></a>00085 <span class="keywordflow">goto</span> done;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 ret = <a class="code" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a>(db,
+<a name="l00088"></a>00088 <span class="stringliteral">"delete_files_on_videos_deleted "</span>
+<a name="l00089"></a>00089 <span class="stringliteral">"DELETE ON videos FOR EACH ROW BEGIN "</span>
+<a name="l00090"></a>00090 <span class="stringliteral">" DELETE FROM files WHERE id = OLD.id; END;"</span>);
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 done:
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> ret;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">static</span> <a class="code" href="lightmediascanner__db__private_8h.html#31db275bbea4b156c8b4493dac818b73">lms_db_table_updater_t</a> _db_table_updater_videos[] = {
+<a name="l00097"></a>00097 _db_table_updater_videos_0
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00102"></a>00102 _db_create_table_if_required(sqlite3 *db)
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__db__common_8c.html#86b766535f9dc7895da7d0f606201700">lms_db_table_update_if_required</a>(db, <span class="stringliteral">"videos"</span>,
+<a name="l00105"></a>00105 <a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(_db_table_updater_videos),
+<a name="l00106"></a>00106 _db_table_updater_videos);
+<a name="l00107"></a>00107 }
<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
-<a name="l00110"></a>00110 ldv = p;
-<a name="l00111"></a>00111 ldv->_references++;
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> ldv;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (!db)
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> NULL;
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
-<a name="l00119"></a>00119 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> NULL;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 ldv = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>));
-<a name="l00124"></a>00124 ldv->_references = 1;
-<a name="l00125"></a>00125 ldv->db = db;
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldv) != 0) {
-<a name="l00128"></a>00128 <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(ldv);
-<a name="l00129"></a>00129 <span class="keywordflow">return</span> NULL;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> ldv;
-<a name="l00133"></a>00133 }
+<a name="l00123"></a>00123 <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *
+<a name="l00124"></a><a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">00124</a> <a class="code" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a>(sqlite3 *db)
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv;
+<a name="l00127"></a>00127 <span class="keywordtype">void</span> *p;
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a>(&_cache, db, &p) == 0) {
+<a name="l00130"></a>00130 ldv = p;
+<a name="l00131"></a>00131 ldv->_references++;
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> ldv;
+<a name="l00133"></a>00133 }
<a name="l00134"></a>00134
-<a name="l00147"></a>00147 <span class="keywordtype">int</span>
-<a name="l00148"></a><a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">00148</a> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
-<a name="l00149"></a>00149 {
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (!ldv)
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> -1;
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (ldv->_is_started)
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> 0;
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (!db)
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> NULL;
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (_db_create_table_if_required(db) != 0) {
+<a name="l00139"></a>00139 fprintf(stderr, <span class="stringliteral">"ERROR: could not create table.\n"</span>);
+<a name="l00140"></a>00140 <span class="keywordflow">return</span> NULL;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 ldv = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>));
+<a name="l00144"></a>00144 ldv->_references = 1;
+<a name="l00145"></a>00145 ldv->db = db;
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#19b0458b9d7b76370588156e931a9c04">lms_db_cache_add</a>(&_cache, db, ldv) != 0) {
+<a name="l00148"></a>00148 <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(ldv);
+<a name="l00149"></a>00149 <span class="keywordflow">return</span> NULL;
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keywordflow">return</span> ldv;
+<a name="l00153"></a>00153 }
<a name="l00154"></a>00154
-<a name="l00155"></a>00155 ldv->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldv->db,
-<a name="l00156"></a>00156 <span class="stringliteral">"INSERT OR REPLACE INTO videos (id, title, artist) VALUES (?, ?, ?)"</span>);
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (!ldv->insert)
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> -2;
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 ldv->_is_started = 1;
-<a name="l00161"></a>00161 <span class="keywordflow">return</span> 0;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163
-<a name="l00176"></a>00176 <span class="keywordtype">int</span>
-<a name="l00177"></a><a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">00177</a> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keywordtype">int</span> r;
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 <span class="keywordflow">if</span> (!ldv)
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> -1;
-<a name="l00183"></a>00183 <span class="keywordflow">if</span> (ldv->_references == 0) {
-<a name="l00184"></a>00184 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_video_free(%p)\n"</span>, ldv);
-<a name="l00185"></a>00185 <span class="keywordflow">return</span> -1;
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 ldv->_references--;
-<a name="l00189"></a>00189 <span class="keywordflow">if</span> (ldv->_references > 0)
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> 0;
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (ldv->insert)
-<a name="l00193"></a>00193 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldv->insert, <span class="stringliteral">"insert"</span>);
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldv->db, ldv);
-<a name="l00196"></a>00196 free(ldv);
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> r;
-<a name="l00199"></a>00199 }
+<a name="l00167"></a>00167 <span class="keywordtype">int</span>
+<a name="l00168"></a><a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">00168</a> <a class="code" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <span class="keywordflow">if</span> (!ldv)
+<a name="l00171"></a>00171 <span class="keywordflow">return</span> -1;
+<a name="l00172"></a>00172 <span class="keywordflow">if</span> (ldv->_is_started)
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> 0;
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 ldv->insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldv->db,
+<a name="l00176"></a>00176 <span class="stringliteral">"INSERT OR REPLACE INTO videos (id, title, artist) VALUES (?, ?, ?)"</span>);
+<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!ldv->insert)
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> -2;
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 ldv->_is_started = 1;
+<a name="l00181"></a>00181 <span class="keywordflow">return</span> 0;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183
+<a name="l00196"></a>00196 <span class="keywordtype">int</span>
+<a name="l00197"></a><a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">00197</a> <a class="code" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)
+<a name="l00198"></a>00198 {
+<a name="l00199"></a>00199 <span class="keywordtype">int</span> r;
<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00202"></a>00202 _db_insert(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
-<a name="l00203"></a>00203 {
-<a name="l00204"></a>00204 sqlite3_stmt *stmt;
-<a name="l00205"></a>00205 <span class="keywordtype">int</span> r, ret;
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 stmt = ldv->insert;
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a>);
-<a name="l00210"></a>00210 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00211"></a>00211 <span class="keywordflow">goto</span> done;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00215"></a>00215 <span class="keywordflow">goto</span> done;
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (ret != 0)
-<a name="l00219"></a>00219 <span class="keywordflow">goto</span> done;
+<a name="l00201"></a>00201 <span class="keywordflow">if</span> (!ldv)
+<a name="l00202"></a>00202 <span class="keywordflow">return</span> -1;
+<a name="l00203"></a>00203 <span class="keywordflow">if</span> (ldv->_references == 0) {
+<a name="l00204"></a>00204 fprintf(stderr, <span class="stringliteral">"ERROR: over-called lms_db_video_free(%p)\n"</span>, ldv);
+<a name="l00205"></a>00205 <span class="keywordflow">return</span> -1;
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 ldv->_references--;
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (ldv->_references > 0)
+<a name="l00210"></a>00210 <span class="keywordflow">return</span> 0;
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (ldv->insert)
+<a name="l00213"></a>00213 <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldv->insert, <span class="stringliteral">"insert"</span>);
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215 r = <a class="code" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a>(&_cache, ldv->db, ldv);
+<a name="l00216"></a>00216 free(ldv);
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> r;
+<a name="l00219"></a>00219 }
<a name="l00220"></a>00220
-<a name="l00221"></a>00221 r = sqlite3_step(stmt);
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
-<a name="l00223"></a>00223 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert video info: %s\n"</span>,
-<a name="l00224"></a>00224 sqlite3_errmsg(ldv->db));
-<a name="l00225"></a>00225 ret = -4;
-<a name="l00226"></a>00226 <span class="keywordflow">goto</span> done;
-<a name="l00227"></a>00227 }
+<a name="l00221"></a>00221 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00222"></a>00222 _db_insert(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 sqlite3_stmt *stmt;
+<a name="l00225"></a>00225 <span class="keywordtype">int</span> r, ret;
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 stmt = ldv->insert;
<a name="l00228"></a>00228
-<a name="l00229"></a>00229 ret = 0;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 done:
-<a name="l00232"></a>00232 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> ret;
-<a name="l00235"></a>00235 }
+<a name="l00229"></a>00229 ret = <a class="code" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a>(stmt, 1, info-><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a>);
+<a name="l00230"></a>00230 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00231"></a>00231 <span class="keywordflow">goto</span> done;
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 2, info-><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00235"></a>00235 <span class="keywordflow">goto</span> done;
<a name="l00236"></a>00236
-<a name="l00248"></a>00248 <span class="keywordtype">int</span>
-<a name="l00249"></a><a class="code" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">00249</a> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <span class="keywordflow">if</span> (!ldv)
-<a name="l00252"></a>00252 <span class="keywordflow">return</span> -1;
-<a name="l00253"></a>00253 <span class="keywordflow">if</span> (!info)
-<a name="l00254"></a>00254 <span class="keywordflow">return</span> -2;
-<a name="l00255"></a>00255 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a> < 1)
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> -3;
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 <span class="keywordflow">return</span> _db_insert(ldv, info);
-<a name="l00259"></a>00259 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00237"></a>00237 ret = <a class="code" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a>(stmt, 3, info-><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-><a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (ret != 0)
+<a name="l00239"></a>00239 <span class="keywordflow">goto</span> done;
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 r = sqlite3_step(stmt);
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (r != SQLITE_DONE) {
+<a name="l00243"></a>00243 fprintf(stderr, <span class="stringliteral">"ERROR: could not insert video info: %s\n"</span>,
+<a name="l00244"></a>00244 sqlite3_errmsg(ldv->db));
+<a name="l00245"></a>00245 ret = -4;
+<a name="l00246"></a>00246 <span class="keywordflow">goto</span> done;
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 ret = 0;
+<a name="l00250"></a>00250
+<a name="l00251"></a>00251 done:
+<a name="l00252"></a>00252 <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(stmt);
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 <span class="keywordflow">return</span> ret;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256
+<a name="l00268"></a>00268 <span class="keywordtype">int</span>
+<a name="l00269"></a><a class="code" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">00269</a> <a class="code" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a>(<a class="code" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, <span class="keyword">struct</span> <a class="code" href="structlms__video__info.html">lms_video_info</a> *info)
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 <span class="keywordflow">if</span> (!ldv)
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> -1;
+<a name="l00273"></a>00273 <span class="keywordflow">if</span> (!info)
+<a name="l00274"></a>00274 <span class="keywordflow">return</span> -2;
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (info-><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a> < 1)
+<a name="l00276"></a>00276 <span class="keywordflow">return</span> -3;
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="keywordflow">return</span> _db_insert(ldv, info);
+<a name="l00279"></a>00279 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_db_video.c File Reference</h1><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<code>#include <stdlib.h></code><br>
<code>#include <stdio.h></code><br>
<p>
-Include dependency graph for lightmediascanner_db_video.c:<p><center><img src="lightmediascanner__db__video_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_video.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_db_video.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__db__video_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_db_video.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_db_video.c_map">
-<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="297,107,447,133"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="276,56,468,83"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="519,107,687,133"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="524,157,681,184"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="776,107,904,133"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="737,157,943,184"></map>
+<area shape="rect" href="lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188"><area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188"><area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265"></map>
+</div>
<p>
<a href="lightmediascanner__db__video_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00249">249</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__db_8h-source.html#l00106">lms_video_info::id</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__video_8c-source.html#l00269">269</a> of file <a class="el" href="lightmediascanner__db__video_8c-source.html">lightmediascanner_db_video.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__db_8h-source.html#l00106">lms_video_info::id</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:56 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="297,107,447,133">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="276,56,468,83">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="519,107,687,133">
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="524,157,681,184">
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="776,107,904,133">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="737,157,943,184">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="lightmediascanner_db.h" alt="" coords="292,84,471,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="33,84,268,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="188,161,388,188">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="412,161,604,188">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="229,239,384,265">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="408,239,661,265">
-a70efaba1e5a3952a0630f7f668a914f
\ No newline at end of file
+ab27ed13f05de8c74b0a91bbade0273c
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_plugin.h</h1><a href="lightmediascanner__plugin_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00121"></a>00121 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_PLUGIN_H_</span>
<a name="l00122"></a><a class="code" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">00122</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_PLUGIN_H_ 1</span>
<a name="l00145"></a><a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">00145</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</a>;
<a name="l00146"></a>00146 };
<a name="l00147"></a>00147
-<a name="l00148"></a><a class="code" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">00148</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(*lms_plugin_match_fn_t)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> base);
-<a name="l00149"></a><a class="code" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">00149</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt, <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">void</span> *match);
-<a name="l00150"></a><a class="code" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">00150</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p);
-<a name="l00151"></a><a class="code" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">00151</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
-<a name="l00152"></a><a class="code" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">00152</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
-<a name="l00153"></a><a class="code" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">00153</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00148"></a><a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">00148</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(*lms_plugin_match_fn_t)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> base);
+<a name="l00149"></a><a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">00149</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt, <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo, <span class="keywordtype">void</span> *match);
+<a name="l00150"></a><a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">00150</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p);
+<a name="l00151"></a><a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">00151</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00152"></a><a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">00152</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
+<a name="l00153"></a><a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">00153</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a>)(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p, <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> *ctxt);
<a name="l00154"></a>00154
<a name="l00155"></a><a class="code" href="structlms__plugin.html">00155</a> <span class="keyword">struct </span><a class="code" href="structlms__plugin.html">lms_plugin</a> {
<a name="l00156"></a><a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">00156</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>;
-<a name="l00157"></a><a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">00157</a> <a class="code" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>;
-<a name="l00158"></a><a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">00158</a> <a class="code" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>;
-<a name="l00159"></a><a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">00159</a> <a class="code" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>;
-<a name="l00160"></a><a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">00160</a> <a class="code" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>;
-<a name="l00161"></a><a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">00161</a> <a class="code" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>;
-<a name="l00162"></a><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">00162</a> <a class="code" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>;
+<a name="l00157"></a><a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">00157</a> <a class="code" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>;
+<a name="l00158"></a><a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">00158</a> <a class="code" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>;
+<a name="l00159"></a><a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">00159</a> <a class="code" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>;
+<a name="l00160"></a><a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">00160</a> <a class="code" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>;
+<a name="l00161"></a><a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">00161</a> <a class="code" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>;
+<a name="l00162"></a><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">00162</a> <a class="code" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>;
<a name="l00163"></a>00163 };
<a name="l00164"></a>00164
<a name="l00165"></a>00165 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00166"></a>00166 <span class="preprocessor"></span>}
<a name="l00167"></a>00167 <span class="preprocessor">#endif</span>
<a name="l00168"></a>00168 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_PLUGIN_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_plugin.h File Reference</h1><code>#include <<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>></code><br>
<code>#include <<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>></code><br>
<code>#include <sqlite3.h></code><br>
<code>#include <sys/types.h></code><br>
<p>
-Include dependency graph for lightmediascanner_plugin.h:<p><center><img src="lightmediascanner__plugin_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_plugin.h_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_plugin.h:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__plugin_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_plugin.h_map" alt=""></center>
<map name="src/lib/lightmediascanner_plugin.h_map">
-<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="301,5,429,32"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="263,56,468,83"></map>
+<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,84,160,110"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,84,437,110"></map>
+</div>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__plugin_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_plugin.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__plugin_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_plugin.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_plugin.hdep_map">
-<area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="272,95,480,121"><area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="576,5,741,32"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="261,183,491,209"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="283,259,469,285"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="557,56,760,83"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="553,107,764,133"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="548,309,769,336"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="540,157,777,184"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="547,360,771,387"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="544,208,773,235"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="548,259,769,285"></map>
+<area shape="rect" href="lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="360,84,613,111"><area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,162,203,188"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="933,84,1208,111"><area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1405,84,1627,111"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,162,472,188"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,162,752,188"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1672,162,1936,188"><area shape="rect" href="lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,162,1061,188"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1960,162,2229,188"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1085,162,1360,188"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1384,162,1648,188"></map>
+</div>
<p>
<a href="lightmediascanner__plugin_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">_LIGHTMEDIASCANNER_PLUGIN_H_</a> 1</td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a> (<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> )(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt)</td></tr>
</table>
<hr><h2>Define Documentation</h2>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00122">122</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00122">122</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="8ce53e0b14aa220d76d552882c1150a4"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_close_fn_t" ref="8ce53e0b14aa220d76d552882c1150a4" args="(lms_plugin_t *p)" -->
+<a class="anchor" name="44576c68c208c78f34f41fcd6c7c2c4b"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_close_fn_t" ref="44576c68c208c78f34f41fcd6c7c2c4b" args=")(lms_plugin_t *p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef int(*) <a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p) </td>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">150</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00150">150</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_finish_fn_t" ref="b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7" args="(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<a class="anchor" name="c72facc8d4fa98f660fd064c80d5b321"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_finish_fn_t" ref="c72facc8d4fa98f660fd064c80d5b321" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef int(*) <a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00153">153</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00153">153</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="4374f28037e503b570592aed72a27c15"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_match_fn_t" ref="4374f28037e503b570592aed72a27c15" args="(lms_plugin_t *p, const char *path, int len, int base)" -->
+<a class="anchor" name="558e8f031ecb3e6b8adf7d98f3e4fcd6"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_match_fn_t" ref="558e8f031ecb3e6b8adf7d98f3e4fcd6" args=")(lms_plugin_t *p, const char *path, int len, int base)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef void*(*) <a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base) </td>
+ <td class="memname">typedef void*(* <a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, const char *path, int len, int base) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00148">148</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="cc0d2d6d376ca4abd084ad313b4d479c"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_parse_fn_t" ref="cc0d2d6d376ca4abd084ad313b4d479c" args="(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)" -->
+<a class="anchor" name="649350fd7015fa63ca86c43906c3f175"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_parse_fn_t" ref="649350fd7015fa63ca86c43906c3f175" args=")(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef int(*) <a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match) </td>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo, void *match) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00149">149</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="a8f0f1499d3cfb5fcd6d25928297f45e"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_setup_fn_t" ref="a8f0f1499d3cfb5fcd6d25928297f45e" args="(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<a class="anchor" name="6bfa82e6e83e85747048f41dfb334acd"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_setup_fn_t" ref="6bfa82e6e83e85747048f41dfb334acd" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef int(*) <a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">151</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00151">151</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="d3b811bbff952ce44516c98119d91b30"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_start_fn_t" ref="d3b811bbff952ce44516c98119d91b30" args="(lms_plugin_t *p, struct lms_context *ctxt)" -->
+<a class="anchor" name="875d300da41e72865452c6ae44687b77"></a><!-- doxytag: member="lightmediascanner_plugin.h::lms_plugin_start_fn_t" ref="875d300da41e72865452c6ae44687b77" args=")(lms_plugin_t *p, struct lms_context *ctxt)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef int(*) <a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a>(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a>)(<a class="el" href="structlms__plugin.html">lms_plugin_t</a> *p, struct <a class="el" href="structlms__context.html">lms_context</a> *ctxt) </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">152</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00152">152</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:04 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:57 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="272,95,480,121">
-<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="576,5,741,32">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="261,183,491,209">
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="283,259,469,285">
-<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="557,56,760,83">
-<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="553,107,764,133">
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="548,309,769,336">
-<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="540,157,777,184">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="547,360,771,387">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="544,208,773,235">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="548,259,769,285">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="src/lib/lightmediascanner_private.h" alt="" coords="360,84,613,111">
+<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,162,203,188">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="src/lib/lightmediascanner_db_private.h" alt="" coords="933,84,1208,111">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="1405,84,1627,111">
+<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,162,472,188">
+<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,162,752,188">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="1672,162,1936,188">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html" title="src/lib/lightmediascanner_db_common.c" alt="" coords="776,162,1061,188">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="1960,162,2229,188">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="1085,162,1360,188">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="1384,162,1648,188">
-028a480f4edc1e7a571f0025d6804f4b
\ No newline at end of file
+54a9e424b28cc49232d65f3abcf1b755
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="301,5,429,32">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="263,56,468,83">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,84,160,110">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,84,437,110">
-d7a79bb71161929390f7080b91f24c07
\ No newline at end of file
+35059f115e3844d21e2e9865d16bbc13
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_private.h</h1><a href="lightmediascanner__private_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_PRIVATE_H_</span>
<a name="l00022"></a><a class="code" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_PRIVATE_H_ 1</span>
<a name="l00046"></a><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">00046</a> <span class="keywordtype">int</span> <a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>;
<a name="l00047"></a>00047 };
<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="comment">/* info to be carried along lms_process() and lms_check() */</span>
-<a name="l00050"></a><a class="code" href="structpinfo.html">00050</a> <span class="keyword">struct </span><a class="code" href="structpinfo.html">pinfo</a> {
-<a name="l00051"></a><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">00051</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>;
-<a name="l00052"></a><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">00052</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>;
-<a name="l00053"></a><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">00053</a> <span class="keyword">struct </span>pollfd poll;
-<a name="l00054"></a><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">00054</a> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>;
-<a name="l00055"></a><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">00055</a> pid_t <a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>;
-<a name="l00056"></a>00056 };
-<a name="l00057"></a>00057
-<a name="l00058"></a><a class="code" href="structparser.html">00058</a> <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> {
-<a name="l00059"></a><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">00059</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
-<a name="l00060"></a><a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">00060</a> <span class="keywordtype">void</span> *<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>;
-<a name="l00061"></a><a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">00061</a> <span class="keywordtype">char</span> *<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>;
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a><a class="code" href="structlms.html">00064</a> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> {
-<a name="l00065"></a><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">00065</a> <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>;
-<a name="l00066"></a><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">00066</a> <span class="keywordtype">int</span> <a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
-<a name="l00067"></a><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">00067</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>;
-<a name="l00068"></a><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">00068</a> <span class="keywordtype">char</span> *<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
-<a name="l00069"></a><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">00069</a> <span class="keywordtype">int</span> <a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
-<a name="l00070"></a><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">00070</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
-<a name="l00071"></a><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">00071</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>:1;
-<a name="l00072"></a>00072 };
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00075"></a>00075 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00076"></a>00076 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
-<a name="l00077"></a>00077 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00078"></a>00078 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00079"></a>00079 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00082"></a>00082 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00083"></a>00083 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00084"></a>00084 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
-<a name="l00085"></a>00085 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3, 4);
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_PRIVATE_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00049"></a><a class="code" href="structcinfo.html">00049</a> <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> {
+<a name="l00050"></a><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">00050</a> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>;
+<a name="l00051"></a>00051 };
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="comment">/* info to be carried along lms_process() and lms_check() */</span>
+<a name="l00054"></a><a class="code" href="structpinfo.html">00054</a> <span class="keyword">struct </span><a class="code" href="structpinfo.html">pinfo</a> {
+<a name="l00055"></a><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">00055</a> <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> <a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>;
+<a name="l00056"></a><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">00056</a> pid_t <a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>;
+<a name="l00057"></a><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">00057</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>;
+<a name="l00058"></a><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">00058</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> <a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>;
+<a name="l00059"></a><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">00059</a> <span class="keyword">struct </span>pollfd <a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>;
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="comment">/* same as struct pinfo for single process versions */</span>
+<a name="l00063"></a><a class="code" href="structsinfo.html">00063</a> <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> {
+<a name="l00064"></a><a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">00064</a> <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> <a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>;
+<a name="l00065"></a><a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">00065</a> <span class="keyword">struct </span><a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a> *<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>;
+<a name="l00066"></a><a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">00066</a> <span class="keywordtype">void</span> **<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00067"></a><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">00067</a> <span class="keywordtype">int</span> <a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>;
+<a name="l00068"></a>00068 };
+<a name="l00069"></a>00069
+<a name="l00070"></a><a class="code" href="structparser.html">00070</a> <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> {
+<a name="l00071"></a><a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">00071</a> <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00072"></a><a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">00072</a> <span class="keywordtype">void</span> *<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>;
+<a name="l00073"></a><a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">00073</a> <span class="keywordtype">char</span> *<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>;
+<a name="l00074"></a>00074 };
+<a name="l00075"></a>00075
+<a name="l00076"></a><a class="code" href="structlms.html">00076</a> <span class="keyword">struct </span><a class="code" href="structlms.html">lms</a> {
+<a name="l00077"></a><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">00077</a> <span class="keyword">struct </span><a class="code" href="structparser.html">parser</a> *<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>;
+<a name="l00078"></a><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">00078</a> <span class="keywordtype">int</span> <a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>;
+<a name="l00079"></a><a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">00079</a> <a class="code" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>;
+<a name="l00080"></a><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">00080</a> <span class="keywordtype">char</span> *<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>;
+<a name="l00081"></a><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">00081</a> <span class="keywordtype">int</span> <a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>;
+<a name="l00082"></a>00082 <span class="keyword">struct </span>{
+<a name="l00083"></a><a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">00083</a> <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> <a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00084"></a><a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">00084</a> <span class="keywordtype">void</span> *<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>;
+<a name="l00085"></a><a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">00085</a> <a class="code" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> <a class="code" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a>;
+<a name="l00086"></a>00086 } <a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>;
+<a name="l00087"></a><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">00087</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>;
+<a name="l00088"></a><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">00088</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>:1;
+<a name="l00089"></a><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">00089</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>:1;
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091
+<a name="l00092"></a><a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">00092</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a>)(<span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
+<a name="l00093"></a><a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">00093</a> <span class="keyword">typedef</span> int (*<a class="code" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a>)(<span class="keywordtype">void</span> *db_ptr, <span class="keyword">struct </span><a class="code" href="structcinfo.html">cinfo</a> *info);
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">int</span> i) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00096"></a>00096 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00097"></a>00097 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00098"></a>00098 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00099"></a>00099 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00100"></a>00100 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00103"></a>00103 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00104"></a>00104 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00105"></a>00105 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00106"></a>00106 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3, 4);
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_PRIVATE_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_private.h File Reference</h1><code>#include "<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>"</code><br>
<code>#include "<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>"</code><br>
<code>#include "<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>"</code><br>
<code>#include <sqlite3.h></code><br>
<p>
-Include dependency graph for lightmediascanner_private.h:<p><center><img src="lightmediascanner__private_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_private.h_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_private.h:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__private_8h__incl.png" border="0" usemap="#src/lib/lightmediascanner_private.h_map" alt=""></center>
<map name="src/lib/lightmediascanner_private.h_map">
-<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="523,5,651,32"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="265,100,433,127"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="484,68,689,95"></map>
+<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,162,160,188"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="293,84,493,111"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,162,437,188"></map>
+</div>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__private_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_private.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__private_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_private.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_private.hdep_map">
-<area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="288,5,453,32"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="269,56,472,83"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="265,107,476,133"></map>
+<area shape="rect" href="lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,84,203,110"><area shape="rect" href="lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,84,472,110"><area shape="rect" href="lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,84,752,110"></map>
+</div>
<p>
<a href="lightmediascanner__private_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html">fds</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structcinfo.html">cinfo</a></td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html">pinfo</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html">sinfo</a></td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html">parser</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html">lms</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a> PATH_MAX</td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> )(struct <a class="el" href="structcinfo.html">cinfo</a> *info, int base, char *path, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a> )(void *db_ptr, struct <a class="el" href="structcinfo.html">cinfo</a> *info)</td></tr>
+
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#239fc535d2f20f09eeec9df86aa6ef9b">lms_parser_del_int</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int i) GNUC_NON_NULL(1)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int <br>
-int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db, void **parser_match, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo) GNUC_NON_NULL(1</td></tr>
</table>
<hr><h2>Define Documentation</h2>
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00031">31</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="e78bf7e06bbba1c42b740fef55cf20f8"></a><!-- doxytag: member="lightmediascanner_private.h::PATH_SIZE" ref="e78bf7e06bbba1c42b740fef55cf20f8" args="" -->
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00042">42</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="818aa1ae6bb03151823bbd9b56bd0801"></a><!-- doxytag: member="lightmediascanner_private.h::check_row_callback_t" ref="818aa1ae6bb03151823bbd9b56bd0801" args=")(void *db_ptr, struct cinfo *info)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__private_8h.html#818aa1ae6bb03151823bbd9b56bd0801">check_row_callback_t</a>)(void *db_ptr, struct <a class="el" href="structcinfo.html">cinfo</a> *info) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00042">42</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="ca9b2668fa08b18c630e16d1f7f702a7"></a><!-- doxytag: member="lightmediascanner_private.h::process_file_callback_t" ref="ca9b2668fa08b18c630e16d1f7f702a7" args=")(struct cinfo *info, int base, char *path, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef int(* <a class="el" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a>)(struct <a class="el" href="structcinfo.html">cinfo</a> *info, int base, char *path, const char *name) </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00092">92</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> * </td>
<td class="paramname"> <em>pinfo</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00566">566</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00052">pinfo::slave</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00596">596</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="a5952b7aae2fa795396a5a286c2ee4a4"></a><!-- doxytag: member="lightmediascanner_private.h::lms_create_pipes" ref="a5952b7aae2fa795396a5a286c2ee4a4" args="(struct pinfo *pinfo) GNUC_NON_NULL(1)" -->
<td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> * </td>
<td class="paramname"> <em>pinfo</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00577">577</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00053">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00052">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00607">607</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="439b3c62e96d472bdb2125a0a04d4fa6"></a><!-- doxytag: member="lightmediascanner_private.h::lms_create_slave" ref="439b3c62e96d472bdb2125a0a04d4fa6" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00664">lms_restart_slave()</a>.
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="dd3853bb333e8bee167477933a058ae5"></a><!-- doxytag: member="lightmediascanner_private.h::lms_finish_slave" ref="dd3853bb333e8bee167477933a058ae5" args="(struct pinfo *pinfo, int(*finish)(const struct fds *fds)) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="239fc535d2f20f09eeec9df86aa6ef9b"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parser_del_int" ref="239fc535d2f20f09eeec9df86aa6ef9b" args="(lms_t *lms, int i) GNUC_NON_NULL(1)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00249">249</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner_8c-source.html#l00278">278</a> of file <a class="el" href="lightmediascanner_8c-source.html">lightmediascanner.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f92504ffd52b8b1d7d90b786af90d1ef"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_check_using" ref="f92504ffd52b8b1d7d90b786af90d1ef" args="(lms_t *lms, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f61d9ef6ae2e576705bbd445db919e6c"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_run" ref="f61d9ef6ae2e576705bbd445db919e6c" args="(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:57 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="288,5,453,32">
-<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="269,56,472,83">
-<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="265,107,476,133">
+<area shape="rect" href="$lightmediascanner_8c.html" title="src/lib/lightmediascanner.c" alt="" coords="5,84,203,110">
+<area shape="rect" href="$lightmediascanner__check_8c.html" title="src/lib/lightmediascanner_check.c" alt="" coords="227,84,472,110">
+<area shape="rect" href="$lightmediascanner__process_8c.html" title="src/lib/lightmediascanner_process.c" alt="" coords="496,84,752,110">
-4d417d15d050e1821629b1854b390812
\ No newline at end of file
+ba95f9c6abb69f3711f23adad29117f0
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="523,5,651,32">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="265,100,433,127">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="484,68,689,95">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="5,162,160,188">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="293,84,493,111">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="184,162,437,188">
-964dddbac26f6db485044d09051fa27b
\ No newline at end of file
+e8df54baffc71a707695af9ed67ef4f1
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_process.c</h1><a href="lightmediascanner__process_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#include "config.h"</span>
<a name="l00305"></a>00305 r = plugin-><a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>(plugin, &ctxt);
<a name="l00306"></a>00306 <span class="keywordflow">if</span> (r != 0) {
<a name="l00307"></a>00307 fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to setup: %d.\n"</span>,
-<a name="l00308"></a>00308 plugin->name, r);
-<a name="l00309"></a>00309 plugin->finish(plugin, &ctxt);
+<a name="l00308"></a>00308 plugin-><a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
+<a name="l00309"></a>00309 plugin-><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &ctxt);
<a name="l00310"></a>00310 <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
<a name="l00311"></a>00311 i--; <span class="comment">/* cancel i++ */</span>
<a name="l00312"></a>00312 }
<a name="l00316"></a>00316 }
<a name="l00317"></a>00317
<a name="l00318"></a>00318 <span class="keywordtype">int</span>
-<a name="l00319"></a><a class="code" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">00319</a> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a>)
+<a name="l00319"></a><a class="code" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">00319</a> <a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
<a name="l00320"></a>00320 {
<a name="l00321"></a>00321 <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
<a name="l00322"></a>00322 <span class="keywordtype">int</span> i;
<a name="l00331"></a>00331 r = plugin-><a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>(plugin, &ctxt);
<a name="l00332"></a>00332 <span class="keywordflow">if</span> (r != 0) {
<a name="l00333"></a>00333 fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to start: %d.\n"</span>,
-<a name="l00334"></a>00334 plugin->name, r);
-<a name="l00335"></a>00335 plugin->finish(plugin, &ctxt);
+<a name="l00334"></a>00334 plugin-><a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
+<a name="l00335"></a>00335 plugin-><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &ctxt);
<a name="l00336"></a>00336 <a class="code" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a>(lms, i);
<a name="l00337"></a>00337 i--; <span class="comment">/* cancel i++ */</span>
<a name="l00338"></a>00338 }
<a name="l00342"></a>00342 }
<a name="l00343"></a>00343
<a name="l00344"></a>00344 <span class="keywordtype">int</span>
-<a name="l00345"></a><a class="code" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">00345</a> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a>)
+<a name="l00345"></a><a class="code" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">00345</a> <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
<a name="l00346"></a>00346 {
<a name="l00347"></a>00347 <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
<a name="l00348"></a>00348 <span class="keywordtype">int</span> i;
<a name="l00357"></a>00357 r = plugin-><a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &ctxt);
<a name="l00358"></a>00358 <span class="keywordflow">if</span> (r != 0)
<a name="l00359"></a>00359 fprintf(stderr, <span class="stringliteral">"ERROR: parser \"%s\" failed to finish: %d.\n"</span>,
-<a name="l00360"></a>00360 plugin->name, r);
+<a name="l00360"></a>00360 plugin-><a class="code" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a>, r);
<a name="l00361"></a>00361 }
<a name="l00362"></a>00362
<a name="l00363"></a>00363 <span class="keywordflow">return</span> 0;
<a name="l00384"></a>00384 }
<a name="l00385"></a>00385
<a name="l00386"></a>00386 <span class="keywordtype">int</span>
-<a name="l00387"></a><a class="code" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">00387</a> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a>, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00387"></a><a class="code" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">00387</a> <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db, <span class="keywordtype">void</span> **parser_match, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
<a name="l00388"></a>00388 {
<a name="l00389"></a>00389 <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
<a name="l00390"></a>00390 <span class="keywordtype">int</span> i, failed, available;
<a name="l00416"></a>00416 }
<a name="l00417"></a>00417
<a name="l00418"></a>00418 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00419"></a>00419 _slave_work(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
+<a name="l00419"></a>00419 _db_and_parsers_setup(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, <span class="keyword">struct</span> db **db_ret, <span class="keywordtype">void</span> ***parser_match_ret)
<a name="l00420"></a>00420 {
-<a name="l00421"></a>00421 <span class="keywordtype">int</span> r, len, base, counter;
-<a name="l00422"></a>00422 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
-<a name="l00423"></a>00423 <span class="keywordtype">void</span> **parser_match;
-<a name="l00424"></a>00424 <span class="keyword">struct </span>db *db;
-<a name="l00425"></a>00425
-<a name="l00426"></a>00426 db = _db_open(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
-<a name="l00427"></a>00427 <span class="keywordflow">if</span> (!db)
-<a name="l00428"></a>00428 <span class="keywordflow">return</span> -1;
-<a name="l00429"></a>00429
-<a name="l00430"></a>00430 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db->handle) != 0) {
-<a name="l00431"></a>00431 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
-<a name="l00432"></a>00432 r = -2;
-<a name="l00433"></a>00433 <span class="keywordflow">goto</span> end;
-<a name="l00434"></a>00434 }
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <span class="keywordflow">if</span> (_db_compile_all_stmts(db) != 0) {
-<a name="l00437"></a>00437 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
-<a name="l00438"></a>00438 r = -3;
-<a name="l00439"></a>00439 <span class="keywordflow">goto</span> end;
-<a name="l00440"></a>00440 }
-<a name="l00441"></a>00441
-<a name="l00442"></a>00442 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db->handle) != 0) {
-<a name="l00443"></a>00443 fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
-<a name="l00444"></a>00444 r = -4;
-<a name="l00445"></a>00445 <span class="keywordflow">goto</span> end;
-<a name="l00446"></a>00446 }
-<a name="l00447"></a>00447 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> < 1) {
-<a name="l00448"></a>00448 fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
-<a name="l00449"></a>00449 r = -5;
-<a name="l00450"></a>00450 <span class="keywordflow">goto</span> end;
-<a name="l00451"></a>00451 }
-<a name="l00452"></a>00452
-<a name="l00453"></a>00453 parser_match = malloc(lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
-<a name="l00454"></a>00454 <span class="keywordflow">if</span> (!parser_match) {
-<a name="l00455"></a>00455 perror(<span class="stringliteral">"malloc"</span>);
-<a name="l00456"></a>00456 r = -6;
-<a name="l00457"></a>00457 <span class="keywordflow">goto</span> end;
-<a name="l00458"></a>00458 }
-<a name="l00459"></a>00459
-<a name="l00460"></a>00460 counter = 0;
-<a name="l00461"></a>00461 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463 <span class="keywordflow">while</span> (((r = _slave_recv_path(fds, &len, &base, path)) == 0) && len > 0) {
-<a name="l00464"></a>00464 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
-<a name="l00465"></a>00465 <span class="keywordtype">int</span> used, r;
-<a name="l00466"></a>00466
-<a name="l00467"></a>00467 finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
-<a name="l00468"></a>00468 finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = len;
-<a name="l00469"></a>00469 finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = base;
+<a name="l00421"></a>00421 <span class="keywordtype">void</span> **parser_match;
+<a name="l00422"></a>00422 <span class="keyword">struct </span>db *db;
+<a name="l00423"></a>00423 <span class="keywordtype">int</span> r = 0;
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 db = _db_open(lms-><a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>);
+<a name="l00426"></a>00426 <span class="keywordflow">if</span> (!db) {
+<a name="l00427"></a>00427 r = -1;
+<a name="l00428"></a>00428 <span class="keywordflow">return</span> r;
+<a name="l00429"></a>00429 }
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a>(lms, db->handle) != 0) {
+<a name="l00432"></a>00432 fprintf(stderr, <span class="stringliteral">"ERROR: could not setup parsers.\n"</span>);
+<a name="l00433"></a>00433 r = -2;
+<a name="l00434"></a>00434 <span class="keywordflow">goto</span> err;
+<a name="l00435"></a>00435 }
+<a name="l00436"></a>00436
+<a name="l00437"></a>00437 <span class="keywordflow">if</span> (_db_compile_all_stmts(db) != 0) {
+<a name="l00438"></a>00438 fprintf(stderr, <span class="stringliteral">"ERROR: could not compile statements.\n"</span>);
+<a name="l00439"></a>00439 r = -3;
+<a name="l00440"></a>00440 <span class="keywordflow">goto</span> err;
+<a name="l00441"></a>00441 }
+<a name="l00442"></a>00442
+<a name="l00443"></a>00443 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a>(lms, db->handle) != 0) {
+<a name="l00444"></a>00444 fprintf(stderr, <span class="stringliteral">"ERROR: could not start parsers.\n"</span>);
+<a name="l00445"></a>00445 r = -4;
+<a name="l00446"></a>00446 <span class="keywordflow">goto</span> err;
+<a name="l00447"></a>00447 }
+<a name="l00448"></a>00448 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> < 1) {
+<a name="l00449"></a>00449 fprintf(stderr, <span class="stringliteral">"ERROR: no parser could be started, exit.\n"</span>);
+<a name="l00450"></a>00450 r = -5;
+<a name="l00451"></a>00451 <span class="keywordflow">goto</span> err;
+<a name="l00452"></a>00452 }
+<a name="l00453"></a>00453
+<a name="l00454"></a>00454 parser_match = malloc(lms-><a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> * <span class="keyword">sizeof</span>(*parser_match));
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (!parser_match) {
+<a name="l00456"></a>00456 perror(<span class="stringliteral">"malloc"</span>);
+<a name="l00457"></a>00457 r = -6;
+<a name="l00458"></a>00458 <span class="keywordflow">goto</span> err;
+<a name="l00459"></a>00459 }
+<a name="l00460"></a>00460
+<a name="l00461"></a>00461 *parser_match_ret = parser_match;
+<a name="l00462"></a>00462 *db_ret = db;
+<a name="l00463"></a>00463 <span class="keywordflow">return</span> r;
+<a name="l00464"></a>00464
+<a name="l00465"></a>00465 err:
+<a name="l00466"></a>00466 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
+<a name="l00467"></a>00467 _db_close(db);
+<a name="l00468"></a>00468 <span class="keywordflow">return</span> r;
+<a name="l00469"></a>00469 }
<a name="l00470"></a>00470
-<a name="l00471"></a>00471 r = _retrieve_file_status(db, &finfo);
-<a name="l00472"></a>00472 <span class="keywordflow">if</span> (r == 0) {
-<a name="l00473"></a>00473 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>) {
-<a name="l00474"></a>00474 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
-<a name="l00475"></a>00475 <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(db->set_file_dtime, &finfo);
-<a name="l00476"></a>00476 }
-<a name="l00477"></a>00477 <span class="keywordflow">goto</span> inform_end;
-<a name="l00478"></a>00478 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0) {
-<a name="l00479"></a>00479 fprintf(stderr, <span class="stringliteral">"ERROR: could not detect file status.\n"</span>);
-<a name="l00480"></a>00480 <span class="keywordflow">goto</span> inform_end;
-<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483 used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &finfo);
-<a name="l00484"></a>00484 <span class="keywordflow">if</span> (!used)
-<a name="l00485"></a>00485 <span class="keywordflow">goto</span> inform_end;
-<a name="l00486"></a>00486
-<a name="l00487"></a>00487 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
-<a name="l00488"></a>00488 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> > 0)
-<a name="l00489"></a>00489 r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db->update_file_info, &finfo);
-<a name="l00490"></a>00490 <span class="keywordflow">else</span>
-<a name="l00491"></a>00491 r = <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(db->insert_file_info, &finfo);
-<a name="l00492"></a>00492 <span class="keywordflow">if</span> (r < 0) {
-<a name="l00493"></a>00493 fprintf(stderr, <span class="stringliteral">"ERROR: could not register path in DB\n"</span>);
-<a name="l00494"></a>00494 <span class="keywordflow">goto</span> inform_end;
-<a name="l00495"></a>00495 }
+<a name="l00471"></a>00471 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00472"></a>00472 _db_and_parsers_process_file(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> db *db, <span class="keywordtype">void</span> **parser_match, <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <span class="keywordtype">int</span> path_base)
+<a name="l00473"></a>00473 {
+<a name="l00474"></a>00474 <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> finfo;
+<a name="l00475"></a>00475 <span class="keywordtype">int</span> used, r;
+<a name="l00476"></a>00476
+<a name="l00477"></a>00477 finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = path;
+<a name="l00478"></a>00478 finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = path_len;
+<a name="l00479"></a>00479 finfo.<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = path_base;
+<a name="l00480"></a>00480
+<a name="l00481"></a>00481 r = _retrieve_file_status(db, &finfo);
+<a name="l00482"></a>00482 <span class="keywordflow">if</span> (r == 0) {
+<a name="l00483"></a>00483 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>) {
+<a name="l00484"></a>00484 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00485"></a>00485 <a class="code" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a>(db->set_file_dtime, &finfo);
+<a name="l00486"></a>00486 }
+<a name="l00487"></a>00487 <span class="keywordflow">return</span> r;
+<a name="l00488"></a>00488 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r < 0) {
+<a name="l00489"></a>00489 fprintf(stderr, <span class="stringliteral">"ERROR: could not detect file status.\n"</span>);
+<a name="l00490"></a>00490 <span class="keywordflow">return</span> r;
+<a name="l00491"></a>00491 }
+<a name="l00492"></a>00492
+<a name="l00493"></a>00493 used = <a class="code" href="lightmediascanner__private_8h.html#f92504ffd52b8b1d7d90b786af90d1ef">lms_parsers_check_using</a>(lms, parser_match, &finfo);
+<a name="l00494"></a>00494 <span class="keywordflow">if</span> (!used)
+<a name="l00495"></a>00495 <span class="keywordflow">return</span> r;
<a name="l00496"></a>00496
-<a name="l00497"></a>00497 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db->handle, parser_match, &finfo);
-<a name="l00498"></a>00498 <span class="keywordflow">if</span> (r < 0) {
-<a name="l00499"></a>00499 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
-<a name="l00500"></a>00500 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
-<a name="l00501"></a>00501 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db->delete_file_info, &finfo);
-<a name="l00502"></a>00502 }
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504 inform_end:
-<a name="l00505"></a>00505 _slave_send_reply(fds, r);
-<a name="l00506"></a>00506 counter++;
-<a name="l00507"></a>00507 <span class="keywordflow">if</span> (counter > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
-<a name="l00508"></a>00508 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
-<a name="l00509"></a>00509 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
-<a name="l00510"></a>00510 counter = 0;
-<a name="l00511"></a>00511 }
+<a name="l00497"></a>00497 finfo.<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<a name="l00498"></a>00498 <span class="keywordflow">if</span> (finfo.<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> > 0)
+<a name="l00499"></a>00499 r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db->update_file_info, &finfo);
+<a name="l00500"></a>00500 <span class="keywordflow">else</span>
+<a name="l00501"></a>00501 r = <a class="code" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a>(db->insert_file_info, &finfo);
+<a name="l00502"></a>00502 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00503"></a>00503 fprintf(stderr, <span class="stringliteral">"ERROR: could not register path in DB\n"</span>);
+<a name="l00504"></a>00504 <span class="keywordflow">return</span> r;
+<a name="l00505"></a>00505 }
+<a name="l00506"></a>00506
+<a name="l00507"></a>00507 r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db->handle, parser_match, &finfo);
+<a name="l00508"></a>00508 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00509"></a>00509 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00510"></a>00510 getpid(), finfo.<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>);
+<a name="l00511"></a>00511 <a class="code" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a>(db->delete_file_info, &finfo);
<a name="l00512"></a>00512 }
<a name="l00513"></a>00513
-<a name="l00514"></a>00514 free(parser_match);
-<a name="l00515"></a>00515 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
-<a name="l00516"></a>00516 end:
-<a name="l00517"></a>00517 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
-<a name="l00518"></a>00518 _db_close(db);
-<a name="l00519"></a>00519
-<a name="l00520"></a>00520 <span class="keywordflow">return</span> r;
-<a name="l00521"></a>00521 }
-<a name="l00522"></a>00522
-<a name="l00523"></a>00523
-<a name="l00524"></a>00524 <span class="comment">/***********************************************************************</span>
-<a name="l00525"></a>00525 <span class="comment"> * Master-side.</span>
-<a name="l00526"></a>00526 <span class="comment"> ***********************************************************************/</span>
-<a name="l00527"></a>00527
-<a name="l00528"></a>00528 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00529"></a>00529 _consume_garbage(<span class="keyword">struct</span> pollfd *pfd)
-<a name="l00530"></a>00530 {
-<a name="l00531"></a>00531 <span class="keywordtype">int</span> r;
-<a name="l00532"></a>00532
-<a name="l00533"></a>00533 <span class="keywordflow">while</span> ((r = poll(pfd, 1, 0)) > 0) {
-<a name="l00534"></a>00534 <span class="keywordflow">if</span> (pfd->revents & (POLLERR | POLLHUP | POLLNVAL))
-<a name="l00535"></a>00535 <span class="keywordflow">return</span> 0;
-<a name="l00536"></a>00536 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfd->revents & POLLIN) {
-<a name="l00537"></a>00537 <span class="keywordtype">char</span> c;
-<a name="l00538"></a>00538
-<a name="l00539"></a>00539 read(pfd->fd, &c, <span class="keyword">sizeof</span>(c));
-<a name="l00540"></a>00540 }
-<a name="l00541"></a>00541 }
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543 <span class="keywordflow">return</span> r;
-<a name="l00544"></a>00544 }
-<a name="l00545"></a>00545
-<a name="l00546"></a>00546 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00547"></a>00547 _close_fds(<span class="keyword">struct</span> fds *fds)
-<a name="l00548"></a>00548 {
-<a name="l00549"></a>00549 <span class="keywordtype">int</span> r;
-<a name="l00550"></a>00550
-<a name="l00551"></a>00551 r = 0;
-<a name="l00552"></a>00552 <span class="keywordflow">if</span> (close(fds-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>) != 0) {
-<a name="l00553"></a>00553 r--;
-<a name="l00554"></a>00554 perror(<span class="stringliteral">"close"</span>);
-<a name="l00555"></a>00555 }
-<a name="l00556"></a>00556
-<a name="l00557"></a>00557 <span class="keywordflow">if</span> (close(fds-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>) != 0) {
-<a name="l00558"></a>00558 r--;
-<a name="l00559"></a>00559 perror(<span class="stringliteral">"close"</span>);
-<a name="l00560"></a>00560 }
-<a name="l00561"></a>00561
-<a name="l00562"></a>00562 <span class="keywordflow">return</span> r;
-<a name="l00563"></a>00563 }
-<a name="l00564"></a>00564
-<a name="l00565"></a>00565 <span class="keywordtype">int</span>
-<a name="l00566"></a><a class="code" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">00566</a> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
-<a name="l00567"></a>00567 {
-<a name="l00568"></a>00568 <span class="keywordtype">int</span> r;
-<a name="l00569"></a>00569
-<a name="l00570"></a>00570 r = _close_fds(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
-<a name="l00571"></a>00571 r += _close_fds(&pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
+<a name="l00514"></a>00514 <span class="keywordflow">return</span> r;
+<a name="l00515"></a>00515 }
+<a name="l00516"></a>00516
+<a name="l00517"></a>00517 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00518"></a>00518 _slave_work(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *<a class="code" href="structfds.html">fds</a>)
+<a name="l00519"></a>00519 {
+<a name="l00520"></a>00520 <span class="keywordtype">int</span> r, len, <a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>, counter;
+<a name="l00521"></a>00521 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>];
+<a name="l00522"></a>00522 <span class="keywordtype">void</span> **parser_match;
+<a name="l00523"></a>00523 <span class="keyword">struct </span>db *db;
+<a name="l00524"></a>00524
+<a name="l00525"></a>00525 r = _db_and_parsers_setup(lms, &db, &parser_match);
+<a name="l00526"></a>00526 <span class="keywordflow">if</span> (r < 0)
+<a name="l00527"></a>00527 <span class="keywordflow">return</span> r;
+<a name="l00528"></a>00528
+<a name="l00529"></a>00529 counter = 0;
+<a name="l00530"></a>00530 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00531"></a>00531
+<a name="l00532"></a>00532 <span class="keywordflow">while</span> (((r = _slave_recv_path(fds, &len, &base, path)) == 0) && len > 0) {
+<a name="l00533"></a>00533 r = _db_and_parsers_process_file(
+<a name="l00534"></a>00534 lms, db, parser_match, path, len, base);
+<a name="l00535"></a>00535
+<a name="l00536"></a>00536 _slave_send_reply(fds, r);
+<a name="l00537"></a>00537 counter++;
+<a name="l00538"></a>00538 <span class="keywordflow">if</span> (counter > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00539"></a>00539 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00540"></a>00540 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00541"></a>00541 counter = 0;
+<a name="l00542"></a>00542 }
+<a name="l00543"></a>00543 }
+<a name="l00544"></a>00544
+<a name="l00545"></a>00545 free(parser_match);
+<a name="l00546"></a>00546 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00547"></a>00547 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, db->handle);
+<a name="l00548"></a>00548 _db_close(db);
+<a name="l00549"></a>00549
+<a name="l00550"></a>00550 <span class="keywordflow">return</span> r;
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552
+<a name="l00553"></a>00553
+<a name="l00554"></a>00554 <span class="comment">/***********************************************************************</span>
+<a name="l00555"></a>00555 <span class="comment"> * Master-side.</span>
+<a name="l00556"></a>00556 <span class="comment"> ***********************************************************************/</span>
+<a name="l00557"></a>00557
+<a name="l00558"></a>00558 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00559"></a>00559 _consume_garbage(<span class="keyword">struct</span> pollfd *pfd)
+<a name="l00560"></a>00560 {
+<a name="l00561"></a>00561 <span class="keywordtype">int</span> r;
+<a name="l00562"></a>00562
+<a name="l00563"></a>00563 <span class="keywordflow">while</span> ((r = poll(pfd, 1, 0)) > 0) {
+<a name="l00564"></a>00564 <span class="keywordflow">if</span> (pfd->revents & (POLLERR | POLLHUP | POLLNVAL))
+<a name="l00565"></a>00565 <span class="keywordflow">return</span> 0;
+<a name="l00566"></a>00566 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfd->revents & POLLIN) {
+<a name="l00567"></a>00567 <span class="keywordtype">char</span> c;
+<a name="l00568"></a>00568
+<a name="l00569"></a>00569 read(pfd->fd, &c, <span class="keyword">sizeof</span>(c));
+<a name="l00570"></a>00570 }
+<a name="l00571"></a>00571 }
<a name="l00572"></a>00572
<a name="l00573"></a>00573 <span class="keywordflow">return</span> r;
<a name="l00574"></a>00574 }
<a name="l00575"></a>00575
-<a name="l00576"></a>00576 <span class="keywordtype">int</span>
-<a name="l00577"></a><a class="code" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">00577</a> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
+<a name="l00576"></a>00576 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00577"></a>00577 _close_fds(<span class="keyword">struct</span> fds *fds)
<a name="l00578"></a>00578 {
-<a name="l00579"></a>00579 <span class="keywordtype">int</span> fds[2];
+<a name="l00579"></a>00579 <span class="keywordtype">int</span> r;
<a name="l00580"></a>00580
-<a name="l00581"></a>00581 <span class="keywordflow">if</span> (pipe(fds) != 0) {
-<a name="l00582"></a>00582 perror(<span class="stringliteral">"pipe"</span>);
-<a name="l00583"></a>00583 <span class="keywordflow">return</span> -1;
-<a name="l00584"></a>00584 }
-<a name="l00585"></a>00585 pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
-<a name="l00586"></a>00586 pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
-<a name="l00587"></a>00587
-<a name="l00588"></a>00588 <span class="keywordflow">if</span> (pipe(fds) != 0) {
-<a name="l00589"></a>00589 perror(<span class="stringliteral">"pipe"</span>);
-<a name="l00590"></a>00590 close(pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>);
-<a name="l00591"></a>00591 close(pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>);
-<a name="l00592"></a>00592 <span class="keywordflow">return</span> -1;
-<a name="l00593"></a>00593 }
-<a name="l00594"></a>00594 pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
-<a name="l00595"></a>00595 pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
-<a name="l00596"></a>00596
-<a name="l00597"></a>00597 pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.fd = pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
-<a name="l00598"></a>00598 pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.events = POLLIN;
+<a name="l00581"></a>00581 r = 0;
+<a name="l00582"></a>00582 <span class="keywordflow">if</span> (close(fds-><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>) != 0) {
+<a name="l00583"></a>00583 r--;
+<a name="l00584"></a>00584 perror(<span class="stringliteral">"close"</span>);
+<a name="l00585"></a>00585 }
+<a name="l00586"></a>00586
+<a name="l00587"></a>00587 <span class="keywordflow">if</span> (close(fds-><a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>) != 0) {
+<a name="l00588"></a>00588 r--;
+<a name="l00589"></a>00589 perror(<span class="stringliteral">"close"</span>);
+<a name="l00590"></a>00590 }
+<a name="l00591"></a>00591
+<a name="l00592"></a>00592 <span class="keywordflow">return</span> r;
+<a name="l00593"></a>00593 }
+<a name="l00594"></a>00594
+<a name="l00595"></a>00595 <span class="keywordtype">int</span>
+<a name="l00596"></a><a class="code" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">00596</a> <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
+<a name="l00597"></a>00597 {
+<a name="l00598"></a>00598 <span class="keywordtype">int</span> r;
<a name="l00599"></a>00599
-<a name="l00600"></a>00600 <span class="keywordflow">return</span> 0;
-<a name="l00601"></a>00601 }
+<a name="l00600"></a>00600 r = _close_fds(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00601"></a>00601 r += _close_fds(&pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
<a name="l00602"></a>00602
-<a name="l00603"></a>00603 <span class="keywordtype">int</span>
-<a name="l00604"></a><a class="code" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">00604</a> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
-<a name="l00605"></a>00605 {
-<a name="l00606"></a>00606 <span class="keywordtype">int</span> r;
-<a name="l00607"></a>00607
-<a name="l00608"></a>00608 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = fork();
-<a name="l00609"></a>00609 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> == -1) {
-<a name="l00610"></a>00610 perror(<span class="stringliteral">"fork"</span>);
-<a name="l00611"></a>00611 <span class="keywordflow">return</span> -1;
-<a name="l00612"></a>00612 }
-<a name="l00613"></a>00613
-<a name="l00614"></a>00614 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> > 0)
-<a name="l00615"></a>00615 <span class="keywordflow">return</span> 0;
-<a name="l00616"></a>00616
-<a name="l00617"></a>00617 _close_fds(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
-<a name="l00618"></a>00618 nice(19);
-<a name="l00619"></a>00619 r = work(pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>, &pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
-<a name="l00620"></a>00620 <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>);
-<a name="l00621"></a>00621 _exit(r);
-<a name="l00622"></a>00622 <span class="keywordflow">return</span> r; <span class="comment">/* shouldn't reach anyway... */</span>
-<a name="l00623"></a>00623 }
-<a name="l00624"></a>00624
-<a name="l00625"></a>00625 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00626"></a>00626 _waitpid(pid_t pid)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <span class="keywordtype">int</span> status;
-<a name="l00629"></a>00629 pid_t r;
-<a name="l00630"></a>00630
-<a name="l00631"></a>00631 r = waitpid(pid, &status, 0);
-<a name="l00632"></a>00632 <span class="keywordflow">if</span> (r > -1)
-<a name="l00633"></a>00633 <span class="keywordflow">return</span> 0;
-<a name="l00634"></a>00634 <span class="keywordflow">else</span>
-<a name="l00635"></a>00635 perror(<span class="stringliteral">"waitpid"</span>);
-<a name="l00636"></a>00636
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> r;
-<a name="l00638"></a>00638 }
-<a name="l00639"></a>00639
-<a name="l00640"></a>00640 <span class="keywordtype">int</span>
-<a name="l00641"></a><a class="code" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">00641</a> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> fds *fds))
-<a name="l00642"></a>00642 {
-<a name="l00643"></a>00643 <span class="keywordtype">int</span> r;
-<a name="l00644"></a>00644
-<a name="l00645"></a>00645 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> <= 0)
-<a name="l00646"></a>00646 <span class="keywordflow">return</span> 0;
-<a name="l00647"></a>00647
-<a name="l00648"></a>00648 r = finish(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
-<a name="l00649"></a>00649 <span class="keywordflow">if</span> (r == 0)
-<a name="l00650"></a>00650 r = _waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
-<a name="l00651"></a>00651 <span class="keywordflow">else</span> {
-<a name="l00652"></a>00652 r = kill(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL);
-<a name="l00653"></a>00653 <span class="keywordflow">if</span> (r < 0)
-<a name="l00654"></a>00654 perror(<span class="stringliteral">"kill"</span>);
-<a name="l00655"></a>00655 <span class="keywordflow">else</span>
-<a name="l00656"></a>00656 r =_waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
-<a name="l00657"></a>00657 }
-<a name="l00658"></a>00658 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
-<a name="l00659"></a>00659
-<a name="l00660"></a>00660 <span class="keywordflow">return</span> r;
-<a name="l00661"></a>00661 }
-<a name="l00662"></a>00662
-<a name="l00663"></a>00663 <span class="keywordtype">int</span>
-<a name="l00664"></a><a class="code" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">00664</a> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
-<a name="l00665"></a>00665 {
-<a name="l00666"></a>00666 <span class="keywordtype">int</span> status;
-<a name="l00667"></a>00667
-<a name="l00668"></a>00668 <span class="keywordflow">if</span> (waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &status, WNOHANG) > 0) {
-<a name="l00669"></a>00669 <span class="keywordflow">if</span> (WIFEXITED(status)) {
-<a name="l00670"></a>00670 <span class="keywordtype">int</span> code;
-<a name="l00671"></a>00671
-<a name="l00672"></a>00672 code = WEXITSTATUS(status);
-<a name="l00673"></a>00673 <span class="keywordflow">if</span> (code != 0) {
-<a name="l00674"></a>00674 fprintf(stderr, <span class="stringliteral">"ERROR: slave returned %d, exit.\n"</span>, code);
-<a name="l00675"></a>00675 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
-<a name="l00676"></a>00676 <span class="keywordflow">return</span> -1;
-<a name="l00677"></a>00677 }
-<a name="l00678"></a>00678 } <span class="keywordflow">else</span> {
-<a name="l00679"></a>00679 <span class="keywordflow">if</span> (WIFSIGNALED(status)) {
-<a name="l00680"></a>00680 <span class="keywordtype">int</span> code;
-<a name="l00681"></a>00681
-<a name="l00682"></a>00682 code = WTERMSIG(status);
-<a name="l00683"></a>00683 fprintf(stderr, <span class="stringliteral">"ERROR: slave was terminated by signal %d.\n"</span>,
-<a name="l00684"></a>00684 code);
-<a name="l00685"></a>00685 }
-<a name="l00686"></a>00686 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
-<a name="l00687"></a>00687 <span class="keywordflow">return</span> -1;
-<a name="l00688"></a>00688 }
-<a name="l00689"></a>00689 }
-<a name="l00690"></a>00690
-<a name="l00691"></a>00691 <span class="keywordflow">if</span> (kill(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL))
-<a name="l00692"></a>00692 perror(<span class="stringliteral">"kill"</span>);
-<a name="l00693"></a>00693
-<a name="l00694"></a>00694 <span class="keywordflow">if</span> (waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &status, 0) < 0)
-<a name="l00695"></a>00695 perror(<span class="stringliteral">"waitpid"</span>);
-<a name="l00696"></a>00696
-<a name="l00697"></a>00697 _consume_garbage(&pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>);
-<a name="l00698"></a>00698 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, work);
-<a name="l00699"></a>00699 }
-<a name="l00700"></a>00700
-<a name="l00701"></a>00701 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00702"></a>00702 _strcat(<span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
-<a name="l00703"></a>00703 {
-<a name="l00704"></a>00704 <span class="keywordtype">int</span> new_len, name_len;
-<a name="l00705"></a>00705
-<a name="l00706"></a>00706 name_len = strlen(name);
-<a name="l00707"></a>00707 new_len = base + name_len;
-<a name="l00708"></a>00708
-<a name="l00709"></a>00709 <span class="keywordflow">if</span> (new_len >= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
-<a name="l00710"></a>00710 path[base] = <span class="charliteral">'\0'</span>;
-<a name="l00711"></a>00711 fprintf(stderr,
-<a name="l00712"></a>00712 <span class="stringliteral">"ERROR: path concatenation too long %d of %d "</span>
-<a name="l00713"></a>00713 <span class="stringliteral">"available: \"%s\" + \"%s\"\n"</span>, new_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>,
-<a name="l00714"></a>00714 path, name);
-<a name="l00715"></a>00715 <span class="keywordflow">return</span> -1;
-<a name="l00716"></a>00716 }
-<a name="l00717"></a>00717
-<a name="l00718"></a>00718 memcpy(path + base, name, name_len + 1);
-<a name="l00719"></a>00719
-<a name="l00720"></a>00720 <span class="keywordflow">return</span> new_len;
-<a name="l00721"></a>00721 }
-<a name="l00722"></a>00722
-<a name="l00723"></a>00723 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00724"></a>00724 _process_file(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
-<a name="l00725"></a>00725 {
-<a name="l00726"></a>00726 <span class="keywordtype">int</span> new_len, reply, r;
-<a name="l00727"></a>00727
-<a name="l00728"></a>00728 new_len = _strcat(base, path, name);
-<a name="l00729"></a>00729 <span class="keywordflow">if</span> (new_len < 0)
-<a name="l00730"></a>00730 <span class="keywordflow">return</span> -1;
-<a name="l00731"></a>00731
-<a name="l00732"></a>00732 <span class="keywordflow">if</span> (_master_send_path(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, new_len, base, path) != 0)
-<a name="l00733"></a>00733 <span class="keywordflow">return</span> -2;
-<a name="l00734"></a>00734
-<a name="l00735"></a>00735 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
-<a name="l00736"></a>00736 pinfo-><a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
-<a name="l00737"></a>00737 <span class="keywordflow">if</span> (r < 0)
-<a name="l00738"></a>00738 <span class="keywordflow">return</span> -3;
-<a name="l00739"></a>00739 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
-<a name="l00740"></a>00740 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
-<a name="l00741"></a>00741 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
-<a name="l00742"></a>00742 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
-<a name="l00743"></a>00743 <span class="keywordflow">return</span> -4;
-<a name="l00744"></a>00744 <span class="keywordflow">return</span> 1;
-<a name="l00745"></a>00745 } <span class="keywordflow">else</span> {
-<a name="l00746"></a>00746 <span class="keywordflow">if</span> (reply < 0) {
-<a name="l00747"></a>00747 <span class="comment">/* XXX callback library users to inform error. */</span>
-<a name="l00748"></a>00748 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
-<a name="l00749"></a>00749 getpid(), path);
-<a name="l00750"></a>00750 <span class="keywordflow">return</span> (-reply) << 8;
-<a name="l00751"></a>00751 } <span class="keywordflow">else</span>
-<a name="l00752"></a>00752 <span class="keywordflow">return</span> reply;
-<a name="l00753"></a>00753 }
-<a name="l00754"></a>00754 }
-<a name="l00755"></a>00755
-<a name="l00756"></a>00756 <span class="keyword">static</span> <span class="keywordtype">int</span>
-<a name="l00757"></a>00757 _process_dir(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
-<a name="l00758"></a>00758 {
-<a name="l00759"></a>00759 DIR *dir;
-<a name="l00760"></a>00760 <span class="keyword">struct </span>dirent *de;
-<a name="l00761"></a>00761 <span class="keywordtype">int</span> new_len, r;
+<a name="l00603"></a>00603 <span class="keywordflow">return</span> r;
+<a name="l00604"></a>00604 }
+<a name="l00605"></a>00605
+<a name="l00606"></a>00606 <span class="keywordtype">int</span>
+<a name="l00607"></a><a class="code" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">00607</a> <a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>)
+<a name="l00608"></a>00608 {
+<a name="l00609"></a>00609 <span class="keywordtype">int</span> fds[2];
+<a name="l00610"></a>00610
+<a name="l00611"></a>00611 <span class="keywordflow">if</span> (pipe(fds) != 0) {
+<a name="l00612"></a>00612 perror(<span class="stringliteral">"pipe"</span>);
+<a name="l00613"></a>00613 <span class="keywordflow">return</span> -1;
+<a name="l00614"></a>00614 }
+<a name="l00615"></a>00615 pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
+<a name="l00616"></a>00616 pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="keywordflow">if</span> (pipe(fds) != 0) {
+<a name="l00619"></a>00619 perror(<span class="stringliteral">"pipe"</span>);
+<a name="l00620"></a>00620 close(pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>);
+<a name="l00621"></a>00621 close(pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>);
+<a name="l00622"></a>00622 <span class="keywordflow">return</span> -1;
+<a name="l00623"></a>00623 }
+<a name="l00624"></a>00624 pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a> = fds[0];
+<a name="l00625"></a>00625 pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a> = fds[1];
+<a name="l00626"></a>00626
+<a name="l00627"></a>00627 pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.fd = pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
+<a name="l00628"></a>00628 pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.events = POLLIN;
+<a name="l00629"></a>00629
+<a name="l00630"></a>00630 <span class="keywordflow">return</span> 0;
+<a name="l00631"></a>00631 }
+<a name="l00632"></a>00632
+<a name="l00633"></a>00633 <span class="keywordtype">int</span>
+<a name="l00634"></a><a class="code" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">00634</a> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(<span class="keyword">struct</span> <a class="code" href="structpinfo.html">pinfo</a> *<a class="code" href="structpinfo.html">pinfo</a>, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 <span class="keywordtype">int</span> r;
+<a name="l00637"></a>00637
+<a name="l00638"></a>00638 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = fork();
+<a name="l00639"></a>00639 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> == -1) {
+<a name="l00640"></a>00640 perror(<span class="stringliteral">"fork"</span>);
+<a name="l00641"></a>00641 <span class="keywordflow">return</span> -1;
+<a name="l00642"></a>00642 }
+<a name="l00643"></a>00643
+<a name="l00644"></a>00644 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> > 0)
+<a name="l00645"></a>00645 <span class="keywordflow">return</span> 0;
+<a name="l00646"></a>00646
+<a name="l00647"></a>00647 _close_fds(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00648"></a>00648 nice(19);
+<a name="l00649"></a>00649 r = work(pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>, &pinfo-><a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
+<a name="l00650"></a>00650 <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>);
+<a name="l00651"></a>00651 _exit(r);
+<a name="l00652"></a>00652 <span class="keywordflow">return</span> r; <span class="comment">/* shouldn't reach anyway... */</span>
+<a name="l00653"></a>00653 }
+<a name="l00654"></a>00654
+<a name="l00655"></a>00655 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00656"></a>00656 _waitpid(pid_t pid)
+<a name="l00657"></a>00657 {
+<a name="l00658"></a>00658 <span class="keywordtype">int</span> status;
+<a name="l00659"></a>00659 pid_t r;
+<a name="l00660"></a>00660
+<a name="l00661"></a>00661 r = waitpid(pid, &status, 0);
+<a name="l00662"></a>00662 <span class="keywordflow">if</span> (r > -1)
+<a name="l00663"></a>00663 <span class="keywordflow">return</span> 0;
+<a name="l00664"></a>00664 <span class="keywordflow">else</span>
+<a name="l00665"></a>00665 perror(<span class="stringliteral">"waitpid"</span>);
+<a name="l00666"></a>00666
+<a name="l00667"></a>00667 <span class="keywordflow">return</span> r;
+<a name="l00668"></a>00668 }
+<a name="l00669"></a>00669
+<a name="l00670"></a>00670 <span class="keywordtype">int</span>
+<a name="l00671"></a><a class="code" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">00671</a> <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*finish)(<span class="keyword">const</span> <span class="keyword">struct</span> fds *fds))
+<a name="l00672"></a>00672 {
+<a name="l00673"></a>00673 <span class="keywordtype">int</span> r;
+<a name="l00674"></a>00674
+<a name="l00675"></a>00675 <span class="keywordflow">if</span> (pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> <= 0)
+<a name="l00676"></a>00676 <span class="keywordflow">return</span> 0;
+<a name="l00677"></a>00677
+<a name="l00678"></a>00678 r = finish(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00679"></a>00679 <span class="keywordflow">if</span> (r == 0)
+<a name="l00680"></a>00680 r = _waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00681"></a>00681 <span class="keywordflow">else</span> {
+<a name="l00682"></a>00682 r = kill(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL);
+<a name="l00683"></a>00683 <span class="keywordflow">if</span> (r < 0)
+<a name="l00684"></a>00684 perror(<span class="stringliteral">"kill"</span>);
+<a name="l00685"></a>00685 <span class="keywordflow">else</span>
+<a name="l00686"></a>00686 r =_waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00687"></a>00687 }
+<a name="l00688"></a>00688 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00689"></a>00689
+<a name="l00690"></a>00690 <span class="keywordflow">return</span> r;
+<a name="l00691"></a>00691 }
+<a name="l00692"></a>00692
+<a name="l00693"></a>00693 <span class="keywordtype">int</span>
+<a name="l00694"></a><a class="code" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">00694</a> <a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(<span class="keyword">struct</span> pinfo *pinfo, <span class="keywordtype">int</span> (*work)(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">struct</span> fds *fds))
+<a name="l00695"></a>00695 {
+<a name="l00696"></a>00696 <span class="keywordtype">int</span> status;
+<a name="l00697"></a>00697
+<a name="l00698"></a>00698 <span class="keywordflow">if</span> (waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &status, WNOHANG) > 0) {
+<a name="l00699"></a>00699 <span class="keywordflow">if</span> (WIFEXITED(status)) {
+<a name="l00700"></a>00700 <span class="keywordtype">int</span> code;
+<a name="l00701"></a>00701
+<a name="l00702"></a>00702 code = WEXITSTATUS(status);
+<a name="l00703"></a>00703 <span class="keywordflow">if</span> (code != 0) {
+<a name="l00704"></a>00704 fprintf(stderr, <span class="stringliteral">"ERROR: slave returned %d, exit.\n"</span>, code);
+<a name="l00705"></a>00705 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00706"></a>00706 <span class="keywordflow">return</span> -1;
+<a name="l00707"></a>00707 }
+<a name="l00708"></a>00708 } <span class="keywordflow">else</span> {
+<a name="l00709"></a>00709 <span class="keywordflow">if</span> (WIFSIGNALED(status)) {
+<a name="l00710"></a>00710 <span class="keywordtype">int</span> code;
+<a name="l00711"></a>00711
+<a name="l00712"></a>00712 code = WTERMSIG(status);
+<a name="l00713"></a>00713 fprintf(stderr, <span class="stringliteral">"ERROR: slave was terminated by signal %d.\n"</span>,
+<a name="l00714"></a>00714 code);
+<a name="l00715"></a>00715 }
+<a name="l00716"></a>00716 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = 0;
+<a name="l00717"></a>00717 <span class="keywordflow">return</span> -1;
+<a name="l00718"></a>00718 }
+<a name="l00719"></a>00719 }
+<a name="l00720"></a>00720
+<a name="l00721"></a>00721 <span class="keywordflow">if</span> (kill(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL))
+<a name="l00722"></a>00722 perror(<span class="stringliteral">"kill"</span>);
+<a name="l00723"></a>00723
+<a name="l00724"></a>00724 <span class="keywordflow">if</span> (waitpid(pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &status, 0) < 0)
+<a name="l00725"></a>00725 perror(<span class="stringliteral">"waitpid"</span>);
+<a name="l00726"></a>00726
+<a name="l00727"></a>00727 _consume_garbage(&pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>);
+<a name="l00728"></a>00728 <span class="keywordflow">return</span> <a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(pinfo, work);
+<a name="l00729"></a>00729 }
+<a name="l00730"></a>00730
+<a name="l00731"></a>00731 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00732"></a>00732 _strcat(<span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00733"></a>00733 {
+<a name="l00734"></a>00734 <span class="keywordtype">int</span> new_len, name_len;
+<a name="l00735"></a>00735
+<a name="l00736"></a>00736 name_len = strlen(name);
+<a name="l00737"></a>00737 new_len = base + name_len;
+<a name="l00738"></a>00738
+<a name="l00739"></a>00739 <span class="keywordflow">if</span> (new_len >= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00740"></a>00740 path[base] = <span class="charliteral">'\0'</span>;
+<a name="l00741"></a>00741 fprintf(stderr,
+<a name="l00742"></a>00742 <span class="stringliteral">"ERROR: path concatenation too long %d of %d "</span>
+<a name="l00743"></a>00743 <span class="stringliteral">"available: \"%s\" + \"%s\"\n"</span>, new_len, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>,
+<a name="l00744"></a>00744 path, name);
+<a name="l00745"></a>00745 <span class="keywordflow">return</span> -1;
+<a name="l00746"></a>00746 }
+<a name="l00747"></a>00747
+<a name="l00748"></a>00748 memcpy(path + base, name, name_len + 1);
+<a name="l00749"></a>00749
+<a name="l00750"></a>00750 <span class="keywordflow">return</span> new_len;
+<a name="l00751"></a>00751 }
+<a name="l00752"></a>00752
+<a name="l00753"></a>00753 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
+<a name="l00754"></a>00754 _report_progress(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370">lms_progress_status_t</a> status)
+<a name="l00755"></a>00755 {
+<a name="l00756"></a>00756 <a class="code" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> cb;
+<a name="l00757"></a>00757 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00758"></a>00758
+<a name="l00759"></a>00759 cb = lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a>;
+<a name="l00760"></a>00760 <span class="keywordflow">if</span> (!cb)
+<a name="l00761"></a>00761 <span class="keywordflow">return</span>;
<a name="l00762"></a>00762
-<a name="l00763"></a>00763 new_len = _strcat(base, path, name);
-<a name="l00764"></a>00764 <span class="keywordflow">if</span> (new_len < 0)
-<a name="l00765"></a>00765 <span class="keywordflow">return</span> -1;
-<a name="l00766"></a>00766 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (new_len + 1 >= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
-<a name="l00767"></a>00767 fprintf(stderr, <span class="stringliteral">"ERROR: path too long\n"</span>);
-<a name="l00768"></a>00768 <span class="keywordflow">return</span> 2;
-<a name="l00769"></a>00769 }
-<a name="l00770"></a>00770
-<a name="l00771"></a>00771 dir = opendir(path);
-<a name="l00772"></a>00772 <span class="keywordflow">if</span> (dir == NULL) {
-<a name="l00773"></a>00773 perror(<span class="stringliteral">"opendir"</span>);
-<a name="l00774"></a>00774 <span class="keywordflow">return</span> 3;
-<a name="l00775"></a>00775 }
-<a name="l00776"></a>00776
-<a name="l00777"></a>00777 path[new_len] = <span class="charliteral">'/'</span>;
-<a name="l00778"></a>00778 new_len++;
-<a name="l00779"></a>00779
-<a name="l00780"></a>00780 r = 0;
-<a name="l00781"></a>00781 <span class="keywordflow">while</span> ((de = readdir(dir)) != NULL) {
-<a name="l00782"></a>00782 <span class="keywordflow">if</span> (de->d_name[0] == <span class="charliteral">'.'</span>)
-<a name="l00783"></a>00783 <span class="keywordflow">continue</span>;
-<a name="l00784"></a>00784 <span class="keywordflow">if</span> (de->d_type == DT_REG) {
-<a name="l00785"></a>00785 <span class="keywordflow">if</span> (_process_file(pinfo, new_len, path, de->d_name) < 0) {
-<a name="l00786"></a>00786 path[new_len - 1] = <span class="charliteral">'\0'</span>;
-<a name="l00787"></a>00787 fprintf(stderr,
-<a name="l00788"></a>00788 <span class="stringliteral">"ERROR: unrecoverable error parsing file, "</span>
-<a name="l00789"></a>00789 <span class="stringliteral">"exit \"%s\".\n"</span>, path);
-<a name="l00790"></a>00790 r = -4;
-<a name="l00791"></a>00791 <span class="keywordflow">goto</span> end;
-<a name="l00792"></a>00792 }
-<a name="l00793"></a>00793 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (de->d_type == DT_DIR || de->d_type == DT_UNKNOWN) {
-<a name="l00794"></a>00794 <span class="keywordflow">if</span> (_process_dir(pinfo, new_len, path, de->d_name) < 0) {
-<a name="l00795"></a>00795 path[new_len - 1] = <span class="charliteral">'\0'</span>;
-<a name="l00796"></a>00796 fprintf(stderr,
-<a name="l00797"></a>00797 <span class="stringliteral">"ERROR: unrecoverable error parsing dir, "</span>
-<a name="l00798"></a>00798 <span class="stringliteral">"exit \"%s\".\n"</span>, path);
-<a name="l00799"></a>00799 r = -5;
-<a name="l00800"></a>00800 <span class="keywordflow">goto</span> end;
-<a name="l00801"></a>00801 }
+<a name="l00763"></a>00763 cb(lms, path, path_len, status, lms-><a class="code" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a>.<a class="code" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a>);
+<a name="l00764"></a>00764 }
+<a name="l00765"></a>00765
+<a name="l00766"></a>00766 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00767"></a>00767 _process_file(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00768"></a>00768 {
+<a name="l00769"></a>00769 <span class="keyword">struct </span>pinfo *pinfo = (<span class="keyword">struct </span>pinfo *)info;
+<a name="l00770"></a>00770 <span class="keywordtype">int</span> new_len, reply, r;
+<a name="l00771"></a>00771
+<a name="l00772"></a>00772 new_len = _strcat(base, path, name);
+<a name="l00773"></a>00773 <span class="keywordflow">if</span> (new_len < 0)
+<a name="l00774"></a>00774 <span class="keywordflow">return</span> -1;
+<a name="l00775"></a>00775
+<a name="l00776"></a>00776 <span class="keywordflow">if</span> (_master_send_path(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, new_len, base, path) != 0)
+<a name="l00777"></a>00777 <span class="keywordflow">return</span> -2;
+<a name="l00778"></a>00778
+<a name="l00779"></a>00779 r = _master_recv_reply(&pinfo-><a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &pinfo-><a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &reply,
+<a name="l00780"></a>00780 pinfo-><a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>-><a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00781"></a>00781 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00782"></a>00782 _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d8c2349ce6dbac01c8be42c29c6c7082">LMS_PROGRESS_STATUS_ERROR_COMM</a>);
+<a name="l00783"></a>00783 <span class="keywordflow">return</span> -3;
+<a name="l00784"></a>00784 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00785"></a>00785 fprintf(stderr, <span class="stringliteral">"ERROR: slave took too long, restart %d\n"</span>,
+<a name="l00786"></a>00786 pinfo-><a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00787"></a>00787 _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d237015217a2e3f16670fa70738730cd0b152">LMS_PROGRESS_STATUS_KILLED</a>);
+<a name="l00788"></a>00788 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a>(pinfo, _slave_work) != 0)
+<a name="l00789"></a>00789 <span class="keywordflow">return</span> -4;
+<a name="l00790"></a>00790 <span class="keywordflow">return</span> 1;
+<a name="l00791"></a>00791 } <span class="keywordflow">else</span> {
+<a name="l00792"></a>00792 <span class="keywordflow">if</span> (reply < 0) {
+<a name="l00793"></a>00793 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00794"></a>00794 getpid(), path);
+<a name="l00795"></a>00795 _report_progress(
+<a name="l00796"></a>00796 info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00797"></a>00797 <span class="keywordflow">return</span> (-reply) << 8;
+<a name="l00798"></a>00798 } <span class="keywordflow">else</span> {
+<a name="l00799"></a>00799 _report_progress(
+<a name="l00800"></a>00800 info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00801"></a>00801 <span class="keywordflow">return</span> reply;
<a name="l00802"></a>00802 }
<a name="l00803"></a>00803 }
-<a name="l00804"></a>00804
-<a name="l00805"></a>00805 end:
-<a name="l00806"></a>00806 closedir(dir);
-<a name="l00807"></a>00807 <span class="keywordflow">return</span> r;
-<a name="l00808"></a>00808 }
-<a name="l00809"></a>00809
-<a name="l00820"></a>00820 <span class="keywordtype">int</span>
-<a name="l00821"></a><a class="code" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">00821</a> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
-<a name="l00822"></a>00822 {
-<a name="l00823"></a>00823 <span class="keyword">struct </span>pinfo pinfo;
-<a name="l00824"></a>00824 <span class="keywordtype">int</span> r, len;
-<a name="l00825"></a>00825 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>], *bname;
-<a name="l00826"></a>00826
-<a name="l00827"></a>00827 <span class="keywordflow">if</span> (!<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>) {
-<a name="l00828"></a>00828 r = -1;
-<a name="l00829"></a>00829 <span class="keywordflow">goto</span> end;
-<a name="l00830"></a>00830 }
-<a name="l00831"></a>00831
-<a name="l00832"></a>00832 <span class="keywordflow">if</span> (!top_path) {
-<a name="l00833"></a>00833 r = -2;
-<a name="l00834"></a>00834 <span class="keywordflow">goto</span> end;
-<a name="l00835"></a>00835 }
-<a name="l00836"></a>00836
-<a name="l00837"></a>00837 <span class="keywordflow">if</span> (<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
-<a name="l00838"></a>00838 fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
-<a name="l00839"></a>00839 r = -3;
-<a name="l00840"></a>00840 <span class="keywordflow">goto</span> end;
-<a name="l00841"></a>00841 }
-<a name="l00842"></a>00842
-<a name="l00843"></a>00843 <span class="keywordflow">if</span> (!<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
-<a name="l00844"></a>00844 fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
-<a name="l00845"></a>00845 r = -4;
-<a name="l00846"></a>00846 <span class="keywordflow">goto</span> end;
-<a name="l00847"></a>00847 }
-<a name="l00848"></a>00848
-<a name="l00849"></a>00849 pinfo.<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a> = <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>;
-<a name="l00850"></a>00850
-<a name="l00851"></a>00851 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&pinfo) != 0) {
-<a name="l00852"></a>00852 r = -5;
-<a name="l00853"></a>00853 <span class="keywordflow">goto</span> end;
-<a name="l00854"></a>00854 }
-<a name="l00855"></a>00855
-<a name="l00856"></a>00856 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(&pinfo, _slave_work) != 0) {
-<a name="l00857"></a>00857 r = -6;
-<a name="l00858"></a>00858 <span class="keywordflow">goto</span> close_pipes;
-<a name="l00859"></a>00859 }
-<a name="l00860"></a>00860
-<a name="l00861"></a>00861 <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
-<a name="l00862"></a>00862 perror(<span class="stringliteral">"realpath"</span>);
-<a name="l00863"></a>00863 r = -7;
-<a name="l00864"></a>00864 <span class="keywordflow">goto</span> finish_slave;
-<a name="l00865"></a>00865 }
-<a name="l00866"></a>00866
-<a name="l00867"></a>00867 <span class="comment">/* search '/' backwards, split dirname and basename, note realpath usage */</span>
-<a name="l00868"></a>00868 len = strlen(path);
-<a name="l00869"></a>00869 <span class="keywordflow">for</span> (; len >= 0 && path[len] != <span class="charliteral">'/'</span>; len--);
-<a name="l00870"></a>00870 len++;
-<a name="l00871"></a>00871 bname = strdup(path + len);
-<a name="l00872"></a>00872 <span class="keywordflow">if</span> (bname == NULL) {
-<a name="l00873"></a>00873 perror(<span class="stringliteral">"strdup"</span>);
-<a name="l00874"></a>00874 r = -8;
-<a name="l00875"></a>00875 <span class="keywordflow">goto</span> finish_slave;
-<a name="l00876"></a>00876 }
+<a name="l00804"></a>00804 }
+<a name="l00805"></a>00805
+<a name="l00806"></a>00806 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00807"></a>00807 _process_file_single_process(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
+<a name="l00808"></a>00808 {
+<a name="l00809"></a>00809 <span class="keyword">struct </span><a class="code" href="structsinfo.html">sinfo</a> *<a class="code" href="structsinfo.html">sinfo</a> = (<span class="keyword">struct </span>sinfo *)info;
+<a name="l00810"></a>00810 <span class="keywordtype">int</span> new_len, r;
+<a name="l00811"></a>00811
+<a name="l00812"></a>00812 <span class="keywordtype">void</span> **parser_match = sinfo-><a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>;
+<a name="l00813"></a>00813 <span class="keyword">struct </span>db *db = sinfo-><a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>;
+<a name="l00814"></a>00814 <a class="code" href="structlms.html">lms_t</a> *lms = sinfo-><a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00815"></a>00815
+<a name="l00816"></a>00816 new_len = _strcat(base, path, name);
+<a name="l00817"></a>00817 <span class="keywordflow">if</span> (new_len < 0)
+<a name="l00818"></a>00818 <span class="keywordflow">return</span> -1;
+<a name="l00819"></a>00819
+<a name="l00820"></a>00820 r = _db_and_parsers_process_file(
+<a name="l00821"></a>00821 lms, db, parser_match, path, new_len, base);
+<a name="l00822"></a>00822 <span class="keywordflow">if</span> (r < 0) {
+<a name="l00823"></a>00823 fprintf(stderr, <span class="stringliteral">"ERROR: pid=%d failed to parse \"%s\".\n"</span>,
+<a name="l00824"></a>00824 getpid(), path);
+<a name="l00825"></a>00825 _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370ac34bba1176659b7d01c29ffe0b67c82">LMS_PROGRESS_STATUS_ERROR_PARSE</a>);
+<a name="l00826"></a>00826 <span class="keywordflow">return</span> (-r) << 8;
+<a name="l00827"></a>00827 } <span class="keywordflow">else</span> {
+<a name="l00828"></a>00828 sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a>++;
+<a name="l00829"></a>00829 <span class="keywordflow">if</span> (sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> > lms-><a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a>) {
+<a name="l00830"></a>00830 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(db->transaction_commit);
+<a name="l00831"></a>00831 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db->transaction_begin);
+<a name="l00832"></a>00832 sinfo-><a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l00833"></a>00833 }
+<a name="l00834"></a>00834
+<a name="l00835"></a>00835 _report_progress(info, path, new_len, <a class="code" href="lightmediascanner_8h.html#52b270a30c58810720ae0650f64d2370d058b5f0e26e414942e96b806d3a7c70">LMS_PROGRESS_STATUS_PROCESSED</a>);
+<a name="l00836"></a>00836 <span class="keywordflow">return</span> r;
+<a name="l00837"></a>00837 }
+<a name="l00838"></a>00838
+<a name="l00839"></a>00839 <span class="keywordflow">return</span> r;
+<a name="l00840"></a>00840 }
+<a name="l00841"></a>00841
+<a name="l00842"></a>00842 <span class="keyword">static</span> <span class="keywordtype">int</span> _process_dir(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file);
+<a name="l00843"></a>00843
+<a name="l00844"></a>00844 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00845"></a>00845 _process_unknown(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00846"></a>00846 {
+<a name="l00847"></a>00847 <span class="keyword">struct </span>stat st;
+<a name="l00848"></a>00848 <span class="keywordtype">int</span> new_len;
+<a name="l00849"></a>00849
+<a name="l00850"></a>00850 new_len = _strcat(base, path, name);
+<a name="l00851"></a>00851 <span class="keywordflow">if</span> (new_len < 0)
+<a name="l00852"></a>00852 <span class="keywordflow">return</span> -1;
+<a name="l00853"></a>00853
+<a name="l00854"></a>00854 <span class="keywordflow">if</span> (stat(path, &st) != 0) {
+<a name="l00855"></a>00855 perror(<span class="stringliteral">"stat"</span>);
+<a name="l00856"></a>00856 <span class="keywordflow">return</span> -2;
+<a name="l00857"></a>00857 }
+<a name="l00858"></a>00858
+<a name="l00859"></a>00859 <span class="keywordflow">if</span> (S_ISREG(st.st_mode))
+<a name="l00860"></a>00860 <span class="keywordflow">return</span> process_file(info, base, path, name);
+<a name="l00861"></a>00861 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S_ISDIR(st.st_mode))
+<a name="l00862"></a>00862 <span class="keywordflow">return</span> _process_dir(info, base, path, name, process_file);
+<a name="l00863"></a>00863 <span class="keywordflow">else</span> {
+<a name="l00864"></a>00864 fprintf(stderr,
+<a name="l00865"></a>00865 <span class="stringliteral">"INFO: %s is neither a directory nor a regular file.\n"</span>, path);
+<a name="l00866"></a>00866 <span class="keywordflow">return</span> -3;
+<a name="l00867"></a>00867 }
+<a name="l00868"></a>00868 }
+<a name="l00869"></a>00869
+<a name="l00870"></a>00870 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00871"></a>00871 _process_dir(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keywordtype">int</span> base, <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00872"></a>00872 {
+<a name="l00873"></a>00873 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00874"></a>00874 <span class="keyword">struct </span>dirent *de;
+<a name="l00875"></a>00875 <span class="keywordtype">int</span> new_len, r;
+<a name="l00876"></a>00876 DIR *dir;
<a name="l00877"></a>00877
-<a name="l00878"></a>00878 <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
-<a name="l00879"></a>00879 r = _process_dir(&pinfo, len, path, bname);
-<a name="l00880"></a>00880 <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
-<a name="l00881"></a>00881 free(bname);
-<a name="l00882"></a>00882
-<a name="l00883"></a>00883 finish_slave:
-<a name="l00884"></a>00884 <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(&pinfo, _master_send_finish);
-<a name="l00885"></a>00885 close_pipes:
-<a name="l00886"></a>00886 <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&pinfo);
-<a name="l00887"></a>00887 end:
-<a name="l00888"></a>00888 <span class="keywordflow">return</span> r;
-<a name="l00889"></a>00889 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00878"></a>00878 new_len = _strcat(base, path, name);
+<a name="l00879"></a>00879 <span class="keywordflow">if</span> (new_len < 0)
+<a name="l00880"></a>00880 <span class="keywordflow">return</span> -1;
+<a name="l00881"></a>00881 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (new_len + 1 >= <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00882"></a>00882 fprintf(stderr, <span class="stringliteral">"ERROR: path too long\n"</span>);
+<a name="l00883"></a>00883 <span class="keywordflow">return</span> 2;
+<a name="l00884"></a>00884 }
+<a name="l00885"></a>00885
+<a name="l00886"></a>00886 dir = opendir(path);
+<a name="l00887"></a>00887 <span class="keywordflow">if</span> (dir == NULL) {
+<a name="l00888"></a>00888 perror(<span class="stringliteral">"opendir"</span>);
+<a name="l00889"></a>00889 <span class="keywordflow">return</span> 3;
+<a name="l00890"></a>00890 }
+<a name="l00891"></a>00891
+<a name="l00892"></a>00892 path[new_len] = <span class="charliteral">'/'</span>;
+<a name="l00893"></a>00893 new_len++;
+<a name="l00894"></a>00894
+<a name="l00895"></a>00895 r = 0;
+<a name="l00896"></a>00896 <span class="keywordflow">while</span> ((de = readdir(dir)) != NULL && !lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>) {
+<a name="l00897"></a>00897 <span class="keywordflow">if</span> (de->d_name[0] == <span class="charliteral">'.'</span>)
+<a name="l00898"></a>00898 <span class="keywordflow">continue</span>;
+<a name="l00899"></a>00899 <span class="keywordflow">if</span> (de->d_type == DT_REG) {
+<a name="l00900"></a>00900 <span class="keywordflow">if</span> (process_file(info, new_len, path, de->d_name) < 0) {
+<a name="l00901"></a>00901 fprintf(stderr,
+<a name="l00902"></a>00902 <span class="stringliteral">"ERROR: unrecoverable error parsing file, "</span>
+<a name="l00903"></a>00903 <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00904"></a>00904 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00905"></a>00905 r = -4;
+<a name="l00906"></a>00906 <span class="keywordflow">goto</span> end;
+<a name="l00907"></a>00907 }
+<a name="l00908"></a>00908 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (de->d_type == DT_DIR) {
+<a name="l00909"></a>00909 <span class="keywordflow">if</span> (_process_dir(
+<a name="l00910"></a>00910 info, new_len, path, de->d_name, process_file) < 0) {
+<a name="l00911"></a>00911 fprintf(stderr,
+<a name="l00912"></a>00912 <span class="stringliteral">"ERROR: unrecoverable error parsing dir, "</span>
+<a name="l00913"></a>00913 <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00914"></a>00914 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00915"></a>00915 r = -5;
+<a name="l00916"></a>00916 <span class="keywordflow">goto</span> end;
+<a name="l00917"></a>00917 }
+<a name="l00918"></a>00918 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (de->d_type == DT_UNKNOWN) {
+<a name="l00919"></a>00919 <span class="keywordflow">if</span> (_process_unknown(
+<a name="l00920"></a>00920 info, new_len, path, de->d_name, process_file) < 0) {
+<a name="l00921"></a>00921 fprintf(stderr,
+<a name="l00922"></a>00922 <span class="stringliteral">"ERROR: unrecoverable error parsing DT_UNKNOWN, "</span>
+<a name="l00923"></a>00923 <span class="stringliteral">"exit \"%s\".\n"</span>, path);
+<a name="l00924"></a>00924 path[new_len - 1] = <span class="charliteral">'\0'</span>;
+<a name="l00925"></a>00925 r = -6;
+<a name="l00926"></a>00926 <span class="keywordflow">goto</span> end;
+<a name="l00927"></a>00927 }
+<a name="l00928"></a>00928 }
+<a name="l00929"></a>00929 }
+<a name="l00930"></a>00930
+<a name="l00931"></a>00931 end:
+<a name="l00932"></a>00932 closedir(dir);
+<a name="l00933"></a>00933 <span class="keywordflow">return</span> r;
+<a name="l00934"></a>00934 }
+<a name="l00935"></a>00935
+<a name="l00936"></a>00936 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00937"></a>00937 _lms_process_check_valid(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)
+<a name="l00938"></a>00938 {
+<a name="l00939"></a>00939 <span class="keywordflow">if</span> (!lms)
+<a name="l00940"></a>00940 <span class="keywordflow">return</span> -1;
+<a name="l00941"></a>00941
+<a name="l00942"></a>00942 <span class="keywordflow">if</span> (!path)
+<a name="l00943"></a>00943 <span class="keywordflow">return</span> -2;
+<a name="l00944"></a>00944
+<a name="l00945"></a>00945 <span class="keywordflow">if</span> (lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>) {
+<a name="l00946"></a>00946 fprintf(stderr, <span class="stringliteral">"ERROR: is already processing.\n"</span>);
+<a name="l00947"></a>00947 <span class="keywordflow">return</span> -3;
+<a name="l00948"></a>00948 }
+<a name="l00949"></a>00949
+<a name="l00950"></a>00950 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00951"></a>00951 fprintf(stderr, <span class="stringliteral">"ERROR: no plugins registered.\n"</span>);
+<a name="l00952"></a>00952 <span class="keywordflow">return</span> -4;
+<a name="l00953"></a>00953 }
+<a name="l00954"></a>00954
+<a name="l00955"></a>00955 <span class="keywordflow">return</span> 0;
+<a name="l00956"></a>00956 }
+<a name="l00957"></a>00957
+<a name="l00958"></a>00958 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00959"></a>00959 _process_trigger(<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *info, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path, <a class="code" href="lightmediascanner__private_8h.html#ca9b2668fa08b18c630e16d1f7f702a7">process_file_callback_t</a> process_file)
+<a name="l00960"></a>00960 {
+<a name="l00961"></a>00961 <span class="keywordtype">char</span> path[<a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>], *bname;
+<a name="l00962"></a>00962 <a class="code" href="structlms.html">lms_t</a> *lms = info-><a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>;
+<a name="l00963"></a>00963 <span class="keywordtype">int</span> len;
+<a name="l00964"></a>00964 <span class="keywordtype">int</span> r;
+<a name="l00965"></a>00965
+<a name="l00966"></a>00966 <span class="keywordflow">if</span> (realpath(top_path, path) == NULL) {
+<a name="l00967"></a>00967 perror(<span class="stringliteral">"realpath"</span>);
+<a name="l00968"></a>00968 <span class="keywordflow">return</span> -1;
+<a name="l00969"></a>00969 }
+<a name="l00970"></a>00970
+<a name="l00971"></a>00971 <span class="comment">/* search '/' backwards, split dirname and basename, note realpath usage */</span>
+<a name="l00972"></a>00972 len = strlen(path);
+<a name="l00973"></a>00973 <span class="keywordflow">for</span> (; len >= 0 && path[len] != <span class="charliteral">'/'</span>; len--);
+<a name="l00974"></a>00974 len++;
+<a name="l00975"></a>00975 bname = strdup(path + len);
+<a name="l00976"></a>00976 <span class="keywordflow">if</span> (bname == NULL) {
+<a name="l00977"></a>00977 perror(<span class="stringliteral">"strdup"</span>);
+<a name="l00978"></a>00978 <span class="keywordflow">return</span> -2;
+<a name="l00979"></a>00979 }
+<a name="l00980"></a>00980
+<a name="l00981"></a>00981 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00982"></a>00982 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00983"></a>00983 r = _process_dir(info, len, path, bname, process_file);
+<a name="l00984"></a>00984 lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 0;
+<a name="l00985"></a>00985 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 0;
+<a name="l00986"></a>00986 free(bname);
+<a name="l00987"></a>00987
+<a name="l00988"></a>00988 <span class="keywordflow">return</span> r;
+<a name="l00989"></a>00989 }
+<a name="l00990"></a>00990
+<a name="l01001"></a>01001 <span class="keywordtype">int</span>
+<a name="l01002"></a><a class="code" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">01002</a> <a class="code" href="lightmediascanner_8h.html#7d2b81cfe07a8cce4c2bef705e7529f4">lms_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l01003"></a>01003 {
+<a name="l01004"></a>01004 <span class="keyword">struct </span>pinfo pinfo;
+<a name="l01005"></a>01005 <span class="keywordtype">int</span> r;
+<a name="l01006"></a>01006
+<a name="l01007"></a>01007 r = _lms_process_check_valid(lms, top_path);
+<a name="l01008"></a>01008 <span class="keywordflow">if</span> (r < 0)
+<a name="l01009"></a>01009 <span class="keywordflow">return</span> r;
+<a name="l01010"></a>01010
+<a name="l01011"></a>01011 pinfo.<a class="code" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l01012"></a>01012
+<a name="l01013"></a>01013 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a>(&pinfo) != 0) {
+<a name="l01014"></a>01014 r = -1;
+<a name="l01015"></a>01015 <span class="keywordflow">goto</span> end;
+<a name="l01016"></a>01016 }
+<a name="l01017"></a>01017
+<a name="l01018"></a>01018 <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a>(&pinfo, _slave_work) != 0) {
+<a name="l01019"></a>01019 r = -2;
+<a name="l01020"></a>01020 <span class="keywordflow">goto</span> close_pipes;
+<a name="l01021"></a>01021 }
+<a name="l01022"></a>01022
+<a name="l01023"></a>01023 r = _process_trigger((<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)&pinfo, top_path, _process_file);
+<a name="l01024"></a>01024
+<a name="l01025"></a>01025 <a class="code" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a>(&pinfo, _master_send_finish);
+<a name="l01026"></a>01026 close_pipes:
+<a name="l01027"></a>01027 <a class="code" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a>(&pinfo);
+<a name="l01028"></a>01028 end:
+<a name="l01029"></a>01029 <span class="keywordflow">return</span> r;
+<a name="l01030"></a>01030 }
+<a name="l01031"></a>01031
+<a name="l01043"></a>01043 <span class="keywordtype">int</span>
+<a name="l01044"></a><a class="code" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">01044</a> <a class="code" href="lightmediascanner_8h.html#c5eda23c23b2ea76f001ac994c2ba9e2">lms_process_single_process</a>(<a class="code" href="structlms.html">lms_t</a> *lms, <span class="keyword">const</span> <span class="keywordtype">char</span> *top_path)
+<a name="l01045"></a>01045 {
+<a name="l01046"></a>01046 <span class="keyword">struct </span>sinfo sinfo;
+<a name="l01047"></a>01047 <span class="keywordtype">int</span> r;
+<a name="l01048"></a>01048
+<a name="l01049"></a>01049 r = _lms_process_check_valid(lms, top_path);
+<a name="l01050"></a>01050 <span class="keywordflow">if</span> (r < 0)
+<a name="l01051"></a>01051 <span class="keywordflow">return</span> r;
+<a name="l01052"></a>01052
+<a name="l01053"></a>01053 sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a> = lms;
+<a name="l01054"></a>01054 sinfo.<a class="code" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a> = 0;
+<a name="l01055"></a>01055
+<a name="l01056"></a>01056 r = _db_and_parsers_setup(sinfo.<a class="code" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a>.<a class="code" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a>, &sinfo.<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>, &sinfo.<a class="code" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a>);
+<a name="l01057"></a>01057 <span class="keywordflow">if</span> (r < 0) {
+<a name="l01058"></a>01058 <span class="keywordflow">if</span> (r == -1)
+<a name="l01059"></a>01059 <span class="keywordflow">return</span> r;
+<a name="l01060"></a>01060 <span class="keywordflow">else</span>
+<a name="l01061"></a>01061 <span class="keywordflow">goto</span> finish;
+<a name="l01062"></a>01062 }
+<a name="l01063"></a>01063
+<a name="l01064"></a>01064 <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sinfo.<a class="code" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>->transaction_begin);
+<a name="l01065"></a>01065
+<a name="l01066"></a>01066 r = _process_trigger(
+<a name="l01067"></a>01067 (<span class="keyword">struct</span> <a class="code" href="structcinfo.html">cinfo</a> *)&sinfo, top_path, _process_file_single_process);
+<a name="l01068"></a>01068
+<a name="l01069"></a>01069 free(sinfo.parser_match);
+<a name="l01070"></a>01070 <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sinfo.db->transaction_commit);
+<a name="l01071"></a>01071
+<a name="l01072"></a>01072 finish:
+<a name="l01073"></a>01073 <a class="code" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a>(lms, sinfo.db->handle);
+<a name="l01074"></a>01074 _db_close(sinfo.db);
+<a name="l01075"></a>01075 <span class="keywordflow">return</span> r;
+<a name="l01076"></a>01076 }
+<a name="l01077"></a>01077
+<a name="l01078"></a>01078 <span class="keywordtype">void</span>
+<a name="l01079"></a><a class="code" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">01079</a> <a class="code" href="lightmediascanner_8h.html#30aa1e83907fc1049d2adccb28eef489">lms_stop_processing</a>(<a class="code" href="structlms.html">lms_t</a> *lms)
+<a name="l01080"></a>01080 {
+<a name="l01081"></a>01081 <span class="keywordflow">if</span> (!lms)
+<a name="l01082"></a>01082 <span class="keywordflow">return</span>;
+<a name="l01083"></a>01083 <span class="keywordflow">if</span> (!lms-><a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>)
+<a name="l01084"></a>01084 <span class="keywordflow">return</span>;
+<a name="l01085"></a>01085
+<a name="l01086"></a>01086 lms-><a class="code" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a> = 1;
+<a name="l01087"></a>01087 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_process.c File Reference</h1><code>#include <sys/wait.h></code><br>
<code>#include <sys/stat.h></code><br>
<code>#include <unistd.h></code><br>
<code>#include "<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>"</code><br>
<p>
-Include dependency graph for lightmediascanner_process.c:<p><center><img src="lightmediascanner__process_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_process.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_process.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_process.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_process.c_map">
-<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="768,461,896,488"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="277,588,451,615"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="268,765,460,792"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="511,715,679,741"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="729,588,935,615"></map>
+<area shape="rect" href="lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="781,239,936,265"><area shape="rect" href="lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="916,84,1127,111"><area shape="rect" href="lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="1225,84,1460,111"><area shape="rect" href="lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="1173,161,1373,188"><area shape="rect" href="lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="960,239,1213,265"></map>
+</div>
<p>
<a href="lightmediascanner__process_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lms_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#5db83cefb7a50bbecea9de26a6ef1c2c">lms_process_single_process</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *top_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#36d624baae0531c20e716c88a82e0aaf">lms_stop_processing</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>)</td></tr>
+
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_process.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00025">25</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> * </td>
<td class="paramname"> <em>pinfo</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00566">566</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00052">pinfo::slave</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00596">596</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c2e1320b9770e0f522451b13f82efc2b"></a><!-- doxytag: member="lightmediascanner_process.c::lms_create_pipes" ref="c2e1320b9770e0f522451b13f82efc2b" args="(struct pinfo *pinfo)" -->
<td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> * </td>
<td class="paramname"> <em>pinfo</em> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00577">577</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00053">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00052">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00607">607</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00045">fds::r</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00046">fds::w</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="e92fe8fe90d93d5ad9a42387a4b2fc6e"></a><!-- doxytag: member="lightmediascanner_process.c::lms_create_slave" ref="e92fe8fe90d93d5ad9a42387a4b2fc6e" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00634">634</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00058">pinfo::slave</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00604">604</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00054">pinfo::lms</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00052">pinfo::slave</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph_map" alt=""></center>
<map name="lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph_map">
-<area shape="rect" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687" title="lms_free" alt="" coords="169,5,236,32"><area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="287,5,431,32"></map>
+<area shape="rect" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687" title="lms_free" alt="" coords="195,5,275,32"><area shape="rect" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="324,5,500,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00641">641</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::child</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00051">pinfo::master</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00671">671</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00057">pinfo::master</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f2e95cea50ce24774d2f5ed7d8c8f41c"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_check_using" ref="f2e95cea50ce24774d2f5ed7d8c8f41c" args="(lms_t *lms, void **parser_match, struct lms_file_info *finfo)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00367">367</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00136">lms_file_info::base</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00157">lms_plugin::match</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00367">367</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00136">lms_file_info::base</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00157">lms_plugin::match</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">lms_file_info::path</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">lms_file_info::path_len</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d002464442b08826a1da920bdf4957b7"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_finish" ref="d002464442b08826a1da920bdf4957b7" args="(lms_t *lms, sqlite3 *db)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00345">345</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">lms_plugin::finish</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00345">345</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">lms_plugin::finish</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="4ab78dfbf29822d91472d18dd7424e77"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_run" ref="4ab78dfbf29822d91472d18dd7424e77" args="(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00387">387</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00158">lms_plugin::parse</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00387">387</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00158">lms_plugin::parse</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c321bebfc5c24cbbac30031202c460e9"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_setup" ref="c321bebfc5c24cbbac30031202c460e9" args="(lms_t *lms, sqlite3 *db)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00293">293</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">lms_plugin::finish</a>, <a class="el" href="lightmediascanner_8c-source.html#l00278">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00160">lms_plugin::setup</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00293">293</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner_8c-source.html#l00249">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00160">lms_plugin::setup</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph_map" alt=""></center>
<map name="lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph_map">
-<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="175,5,297,32"></map>
+<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="201,5,345,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00319">319</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">lms_plugin::finish</a>, <a class="el" href="lightmediascanner_8c-source.html#l00278">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00078">lms::n_parsers</a>, <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">lms_plugin::name</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00077">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00071">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00161">lms_plugin::start</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00319">319</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner_8c-source.html#l00249">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00066">lms::n_parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00059">parser::plugin</a>, and <a class="el" href="lightmediascanner__plugin_8h-source.html#l00161">lms_plugin::start</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph_map" alt=""></center>
<map name="lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph_map">
-<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="169,5,292,32"></map>
+<area shape="rect" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="196,5,340,32"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01002">1002</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00821">821</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph_map" alt=""></center>
+<map name="lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph_map">
+<area shape="rect" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="164,5,292,32"><area shape="rect" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="159,56,297,82"><area shape="rect" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="159,106,297,133"><area shape="rect" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5" title="lms_finish_slave" alt="" coords="164,157,292,184"></map>
+</div>
+
+</div>
+</div><p>
+<a class="anchor" name="5db83cefb7a50bbecea9de26a6ef1c2c"></a><!-- doxytag: member="lightmediascanner_process.c::lms_process_single_process" ref="5db83cefb7a50bbecea9de26a6ef1c2c" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int lms_process_single_process </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char * </td>
+ <td class="paramname"> <em>top_path</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00071">lms::is_processing</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00054">pinfo::lms</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00566">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, <a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave()</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">lms::parsers</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00042">PATH_SIZE</a>.
+Process the given directory *without fork()-ing* into child process.<p>
+This will add or update media found in the given directory or its children. Note that if a <a class="el" href="structparser.html">parser</a> hangs during the process, this call will also hang.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structlms.html">lms</a></em> </td><td>previously allocated Light Media Scanner instance. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>top_path</em> </td><td>top directory to scan.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>On success 0 is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01044">1044</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00067">sinfo::commit_counter</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00064">sinfo::common</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00065">sinfo::db</a>, <a class="el" href="lightmediascanner__private_8h-source.html#l00050">cinfo::lms</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00532">lms_db_begin_transaction()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00559">lms_db_end_transaction()</a>, <a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00066">sinfo::parser_match</a>.</p>
+
<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph_map" alt=""></center>
-<map name="lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph_map">
-<area shape="rect" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="144,5,253,32"><area shape="rect" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="143,56,255,83"><area shape="rect" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="143,107,255,133"><area shape="rect" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5" title="lms_finish_slave" alt="" coords="143,157,255,184"></map>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph_map" alt=""></center>
+<map name="lightmediascanner__process_8c_5db83cefb7a50bbecea9de26a6ef1c2c_cgraph_map">
+<area shape="rect" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc" title="lms_db_begin_transaction" alt="" coords="261,6,456,32"><area shape="rect" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c" title="lms_db_end_transaction" alt="" coords="267,56,451,83"><area shape="rect" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f" title="lms_parsers_finish" alt="" coords="288,107,429,134"></map>
+</div>
</div>
</div><p>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00694">694</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00056">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00059">pinfo::poll</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l00664">664</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__private_8h-source.html#l00055">pinfo::child</a>, <a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00053">pinfo::poll</a>.
-<p>
-Here is the call graph for this function:<p><center><img src="lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph_map" alt=""></center>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png" border="0" usemap="#lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph_map" alt=""></center>
<map name="lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph_map">
-<area shape="rect" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="169,5,281,32"></map>
+<area shape="rect" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="196,5,335,32"></map>
+</div>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+<a class="anchor" name="36d624baae0531c20e716c88a82e0aaf"></a><!-- doxytag: member="lightmediascanner_process.c::lms_stop_processing" ref="36d624baae0531c20e716c88a82e0aaf" args="(lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void lms_stop_processing </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> * </td>
+ <td class="paramname"> <em>lms</em> </td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__process_8c-source.html#l01079">1079</a> of file <a class="el" href="lightmediascanner__process_8c-source.html">lightmediascanner_process.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__private_8h-source.html#l00088">lms::is_processing</a>, and <a class="el" href="lightmediascanner__private_8h-source.html#l00089">lms::stop_processing</a>.</p>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:57 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc" title="lms_db_begin_transaction" alt="" coords="261,6,456,32">
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c" title="lms_db_end_transaction" alt="" coords="267,56,451,83">
+<area shape="rect" href="$lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f" title="lms_parsers_finish" alt="" coords="288,107,429,134">
--- /dev/null
+01c9e7a30a3eb96fb74afdc4e98a085b
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="169,5,292,32">
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="196,5,340,32">
-62762b100835173e3e06e968fae996a1
\ No newline at end of file
+d4bf8deda57d98b447d76a952229184a
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="169,5,281,32">
+<area shape="rect" href="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="196,5,335,32">
-e55f1e94a5d2e367b6febb666c14335c
\ No newline at end of file
+4bca3387e9e48b276840d2a7383abf0d
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="768,461,896,488">
-<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="277,588,451,615">
-<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="268,765,460,792">
-<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="511,715,679,741">
-<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="729,588,935,615">
+<area shape="rect" href="$lightmediascanner_8h.html" title="lightmediascanner.h" alt="" coords="781,239,936,265">
+<area shape="rect" href="$lightmediascanner__private_8h.html" title="lightmediascanner_private.h" alt="" coords="916,84,1127,111">
+<area shape="rect" href="$lightmediascanner__db__private_8h.html" title="lightmediascanner_db_private.h" alt="" coords="1225,84,1460,111">
+<area shape="rect" href="$lightmediascanner__plugin_8h.html" title="lightmediascanner_plugin.h" alt="" coords="1173,161,1373,188">
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="960,239,1213,265">
-691954d091cc4954a262a036d6b1422d
\ No newline at end of file
+fb098b2d3521d872c74dd85a2e81eb34
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="144,5,253,32">
-<area shape="rect" href="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="143,56,255,83">
-<area shape="rect" href="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="143,107,255,133">
-<area shape="rect" href="$lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5" title="lms_finish_slave" alt="" coords="143,157,255,184">
+<area shape="rect" href="$lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed" title="lms_close_pipes" alt="" coords="164,5,292,32">
+<area shape="rect" href="$lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4" title="lms_create_pipes" alt="" coords="159,56,297,82">
+<area shape="rect" href="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="159,106,297,133">
+<area shape="rect" href="$lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5" title="lms_finish_slave" alt="" coords="164,157,292,184">
-e52682bdf61c6444457aae1406ddbca3
\ No newline at end of file
+d5c1dc335bcc8e2d2d576a73f88fa8d0
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="175,5,297,32">
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="201,5,345,32">
-e0c9d5b36404f6c62bb378cdae88cbbd
\ No newline at end of file
+d31652227a59c5218fa77c6615b5e90a
\ No newline at end of file
-<area shape="rect" href="$group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687" title="lms_free" alt="" coords="169,5,236,32">
-<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="287,5,431,32">
+<area shape="rect" href="$group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687" title="lms_free" alt="" coords="195,5,275,32">
+<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="324,5,500,32">
-fa6cbabb16bc428f9986980da76a441c
\ No newline at end of file
+97aeb33faa18124d33ca962480e6978d
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
-<h1>src/lib/lightmediascanner_utils.c</h1><a href="lightmediascanner__utils_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>></span>
-<a name="l00002"></a>00002 <span class="preprocessor">#include <ctype.h></span>
-<a name="l00003"></a>00003 <span class="preprocessor">#include <alloca.h></span>
-<a name="l00004"></a>00004
-<a name="l00012"></a>00012 <span class="keywordtype">void</span>
-<a name="l00013"></a><a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">00013</a> <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
-<a name="l00014"></a>00014 {
-<a name="l00015"></a>00015 <span class="keywordtype">int</span> i, len;
-<a name="l00016"></a>00016 <span class="keywordtype">char</span> *p;
-<a name="l00017"></a>00017
-<a name="l00018"></a>00018 len = *p_len;
-<a name="l00019"></a>00019
-<a name="l00020"></a>00020 <span class="keywordflow">if</span> (len < 2) <span class="comment">/* just '\0'? */</span>
-<a name="l00021"></a>00021 <span class="keywordflow">return</span>;
-<a name="l00022"></a>00022
-<a name="l00023"></a>00023 p = str + len - 1;
-<a name="l00024"></a>00024 <span class="keywordflow">for</span> (i = len - 1; i >= 0; i--) {
-<a name="l00025"></a>00025 <span class="keywordflow">if</span> (isspace(*p)) {
-<a name="l00026"></a>00026 *p = <span class="charliteral">'\0'</span>;
-<a name="l00027"></a>00027 len--;
-<a name="l00028"></a>00028 p--;
-<a name="l00029"></a>00029 } <span class="keywordflow">else</span>
-<a name="l00030"></a>00030 <span class="keywordflow">break</span>;
-<a name="l00031"></a>00031 }
-<a name="l00032"></a>00032 <span class="keywordflow">if</span> (len == 0) {
-<a name="l00033"></a>00033 *p_len = 0;
-<a name="l00034"></a>00034 <span class="keywordflow">return</span>;
-<a name="l00035"></a>00035 }
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 p = str;
-<a name="l00038"></a>00038 <span class="keywordflow">for</span> (i = 0; i < len; i++) {
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (isspace(*p))
-<a name="l00040"></a>00040 p++;
-<a name="l00041"></a>00041 <span class="keywordflow">else</span>
-<a name="l00042"></a>00042 <span class="keywordflow">break</span>;
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044 len -= i;
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (len == 0) {
-<a name="l00046"></a>00046 *str = <span class="charliteral">'\0'</span>;
-<a name="l00047"></a>00047 *p_len = 0;
-<a name="l00048"></a>00048 <span class="keywordflow">return</span>;
-<a name="l00049"></a>00049 }
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 *p_len = len;
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (str < p)
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (; len > 0; len--, str++, p++)
-<a name="l00055"></a>00055 *str = *p;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00068"></a>00068 <span class="keywordtype">int</span>
-<a name="l00069"></a><a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">00069</a> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) {
-<a name="l00070"></a>00070 <span class="keywordtype">int</span> i;
-<a name="l00071"></a>00071 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *exts_pos;
-<a name="l00072"></a>00072 <span class="keyword">const</span> <span class="keywordtype">char</span> *s;
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 exts_pos = alloca(exts_len * <span class="keyword">sizeof</span>(*exts_pos));
-<a name="l00075"></a>00075 <span class="keywordflow">for</span> (i = 0; i < exts_len; i++)
-<a name="l00076"></a>00076 exts_pos[i] = exts[i].len;
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="keywordflow">for</span> (s = name + name_len - 1; s >= name; s--) {
-<a name="l00079"></a>00079 <span class="keywordtype">int</span> i, match;
-<a name="l00080"></a>00080 <span class="keywordtype">char</span> c1, c2;
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 c1 = *s;
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (c1 >= <span class="charliteral">'a'</span>)
-<a name="l00084"></a>00084 c2 = c1;
-<a name="l00085"></a>00085 <span class="keywordflow">else</span>
-<a name="l00086"></a>00086 c2 = <span class="charliteral">'a'</span> + c1 - <span class="charliteral">'A'</span>;
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 match = 0;
-<a name="l00089"></a>00089 <span class="keywordflow">for</span> (i = 0; i < exts_len; i++) {
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (exts_pos[i] > 0) {
-<a name="l00091"></a>00091 <span class="keywordtype">char</span> ce;
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 ce = exts[i].<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>[exts_pos[i] - 1];
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (ce == c1 || ce == c2) {
-<a name="l00095"></a>00095 <span class="keywordflow">if</span> (exts_pos[i] == 1)
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> i;
-<a name="l00097"></a>00097 exts_pos[i]--;
-<a name="l00098"></a>00098 match = 1;
-<a name="l00099"></a>00099 } <span class="keywordflow">else</span>
-<a name="l00100"></a>00100 exts_pos[i] = 0;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (!match)
-<a name="l00104"></a>00104 <span class="keywordflow">return</span> -1;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">return</span> -1;
-<a name="l00108"></a>00108 }
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+<h1>src/lib/lightmediascanner_utils.c</h1><a href="lightmediascanner__utils_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <ctype.h></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <stdlib.h></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <alloca.h></span>
+<a name="l00025"></a>00025
+<a name="l00033"></a>00033 <span class="keywordtype">void</span>
+<a name="l00034"></a><a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">00034</a> <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00035"></a>00035 {
+<a name="l00036"></a>00036 <span class="keywordtype">int</span> i, len;
+<a name="l00037"></a>00037 <span class="keywordtype">char</span> *p;
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 len = *p_len;
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (len == 0)
+<a name="l00042"></a>00042 <span class="keywordflow">return</span>;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keywordflow">if</span> (*str == <span class="charliteral">'\0'</span>) {
+<a name="l00045"></a>00045 *p_len = 0;
+<a name="l00046"></a>00046 <span class="keywordflow">return</span>;
+<a name="l00047"></a>00047 }
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 p = str + len - 1;
+<a name="l00050"></a>00050 <span class="keywordflow">for</span> (i = len - 1; i >= 0; i--) {
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (isspace(*p) || *p == <span class="charliteral">'\0'</span>) {
+<a name="l00052"></a>00052 *p = <span class="charliteral">'\0'</span>;
+<a name="l00053"></a>00053 len--;
+<a name="l00054"></a>00054 p--;
+<a name="l00055"></a>00055 } <span class="keywordflow">else</span>
+<a name="l00056"></a>00056 <span class="keywordflow">break</span>;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (len == 0) {
+<a name="l00059"></a>00059 *p_len = 0;
+<a name="l00060"></a>00060 <span class="keywordflow">return</span>;
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 p = str;
+<a name="l00064"></a>00064 <span class="keywordflow">for</span> (i = 0; i < len; i++) {
+<a name="l00065"></a>00065 <span class="keywordflow">if</span> (isspace(*p))
+<a name="l00066"></a>00066 p++;
+<a name="l00067"></a>00067 <span class="keywordflow">else</span>
+<a name="l00068"></a>00068 <span class="keywordflow">break</span>;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 len -= i;
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (len == 0) {
+<a name="l00072"></a>00072 *str = <span class="charliteral">'\0'</span>;
+<a name="l00073"></a>00073 *p_len = 0;
+<a name="l00074"></a>00074 <span class="keywordflow">return</span>;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 *p_len = len;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (str < p)
+<a name="l00080"></a>00080 <span class="keywordflow">for</span> (; len >= 0; len--, str++, p++)
+<a name="l00081"></a>00081 *str = *p;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083
+<a name="l00093"></a>00093 <span class="keywordtype">void</span>
+<a name="l00094"></a><a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">00094</a> <a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a>(<span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len)
+<a name="l00095"></a>00095 {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!*p_str)
+<a name="l00097"></a>00097 <span class="keywordflow">return</span>;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(*p_str, p_len);
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (*p_len == 0) {
+<a name="l00101"></a>00101 free(*p_str);
+<a name="l00102"></a>00102 *p_str = NULL;
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00113"></a>00113 <span class="keywordtype">void</span>
+<a name="l00114"></a><a class="code" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">00114</a> <a class="code" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *p)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (!p-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>)
+<a name="l00117"></a>00117 <span class="keywordflow">return</span>;
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(p-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, &p-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>);
+<a name="l00120"></a>00120 <span class="keywordflow">if</span> (p-><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a> == 0) {
+<a name="l00121"></a>00121 free(p-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>);
+<a name="l00122"></a>00122 p-><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a> = NULL;
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126
+<a name="l00137"></a>00137 <span class="keywordtype">int</span>
+<a name="l00138"></a><a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">00138</a> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) {
+<a name="l00139"></a>00139 <span class="keywordtype">int</span> i;
+<a name="l00140"></a>00140 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *exts_pos;
+<a name="l00141"></a>00141 <span class="keyword">const</span> <span class="keywordtype">char</span> *s;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 exts_pos = alloca(exts_len * <span class="keyword">sizeof</span>(*exts_pos));
+<a name="l00144"></a>00144 <span class="keywordflow">for</span> (i = 0; i < exts_len; i++)
+<a name="l00145"></a>00145 exts_pos[i] = exts[i].len;
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="keywordflow">for</span> (s = name + name_len - 1; s >= name; s--) {
+<a name="l00148"></a>00148 <span class="keywordtype">int</span> i, match;
+<a name="l00149"></a>00149 <span class="keywordtype">char</span> c1, c2;
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 c1 = *s;
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> (c1 >= <span class="charliteral">'a'</span>)
+<a name="l00153"></a>00153 c2 = c1;
+<a name="l00154"></a>00154 <span class="keywordflow">else</span>
+<a name="l00155"></a>00155 c2 = <span class="charliteral">'a'</span> + c1 - <span class="charliteral">'A'</span>;
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 match = 0;
+<a name="l00158"></a>00158 <span class="keywordflow">for</span> (i = 0; i < exts_len; i++) {
+<a name="l00159"></a>00159 <span class="keywordflow">if</span> (exts_pos[i] > 0) {
+<a name="l00160"></a>00160 <span class="keywordtype">char</span> ce;
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 ce = exts[i].<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>[exts_pos[i] - 1];
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (ce == c1 || ce == c2) {
+<a name="l00164"></a>00164 <span class="keywordflow">if</span> (exts_pos[i] == 1)
+<a name="l00165"></a>00165 <span class="keywordflow">return</span> i;
+<a name="l00166"></a>00166 exts_pos[i]--;
+<a name="l00167"></a>00167 match = 1;
+<a name="l00168"></a>00168 } <span class="keywordflow">else</span>
+<a name="l00169"></a>00169 exts_pos[i] = 0;
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172 <span class="keywordflow">if</span> (!match)
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> -1;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="keywordflow">return</span> -1;
+<a name="l00177"></a>00177 }
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_utils.c File Reference</h1><code>#include <<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>></code><br>
<code>#include <ctype.h></code><br>
+<code>#include <stdlib.h></code><br>
<code>#include <alloca.h></code><br>
<p>
-Include dependency graph for lightmediascanner_utils.c:<p><center><img src="lightmediascanner__utils_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_utils.c_map" alt=""></center>
+<div class="dynheader">
+Include dependency graph for lightmediascanner_utils.c:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__utils_8c__incl.png" border="0" usemap="#src/lib/lightmediascanner_utils.c_map" alt=""></center>
<map name="src/lib/lightmediascanner_utils.c_map">
-<area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="249,5,407,32"></map>
+<area shape="rect" href="lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="5,84,197,110"></map>
+</div>
<p>
<a href="lightmediascanner__utils_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a> (char *str, unsigned int *p_len)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a> (char **p_str, unsigned int *p_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a> (struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *p)</td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a> (const char *name, unsigned int name_len, const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *exts, unsigned int exts_len)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
+<a class="anchor" name="9ed157dee5c16f4c62c5ae6e281580cf"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_string_size_strip_and_free" ref="9ed157dee5c16f4c62c5ae6e281580cf" args="(struct lms_string_size *p)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void lms_string_size_strip_and_free </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> * </td>
+ <td class="paramname"> <em>p</em> </td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="structlms__string__size.html">lms_string_size</a> version of <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>*p</em> </td><td>pointer to <a class="el" href="structlms__string__size.html">lms_string_size</a> to be stripped.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on lms_string_size->str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">114</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">lms_string_size::len</a>, <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>, and <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph.png" border="0" usemap="#lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph_map" alt=""></center>
+<map name="lightmediascanner__utils_8c_9ed157dee5c16f4c62c5ae6e281580cf_cgraph_map">
+<area shape="rect" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="281,5,380,32"></map>
+</div>
+
+</div>
+</div><p>
<a class="anchor" name="086d2449129976541c66a83984bffbe6"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_strstrip" ref="086d2449129976541c66a83984bffbe6" args="(char *str, unsigned int *p_len)" -->
<div class="memitem">
<div class="memproto">
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
-Strips string, in place.<p>
+Copyright (C) 2007 by INdT<p>
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
+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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> Strips string, in place.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>string to be stripped. </td></tr>
</table>
</dl>
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">34</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>, and <a class="el" href="lightmediascanner__utils_8c-source.html#l00094">lms_strstrip_and_free()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="45d15c8bfeddaef0d5b1d0bd9ecc0c79"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_strstrip_and_free" ref="45d15c8bfeddaef0d5b1d0bd9ecc0c79" args="(char **p_str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void lms_strstrip_and_free </td>
+ <td>(</td>
+ <td class="paramtype">char ** </td>
+ <td class="paramname"> <em>p_str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int * </td>
+ <td class="paramname"> <em>p_len</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+If string exists, strips it, in place, free if *p_len = 0<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>p_str</em> </td><td>pointer to string to be stripped. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>p_len</em> </td><td>string length to analyse, also the place where the final size is stored.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on *p_str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00094">94</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>.</p>
+
<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00013">13</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph.png" border="0" usemap="#lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph_map" alt=""></center>
+<map name="lightmediascanner__utils_8c_45d15c8bfeddaef0d5b1d0bd9ecc0c79_cgraph_map">
+<area shape="rect" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="223,5,321,32"></map>
+</div>
+
</div>
</div><p>
<a class="anchor" name="71ee8b57cf7c5eba8ec0593e756d2529"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_which_extension" ref="71ee8b57cf7c5eba8ec0593e756d2529" args="(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len)" -->
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>index in <code>exts</code> or -1 if it doesn't match none. </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00069">69</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.
-<p>
-References <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00138">138</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:57 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<area shape="rect" href="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="223,5,321,32">
--- /dev/null
+72bdbbcc143b3b97c8fea244d43482b0
\ No newline at end of file
--- /dev/null
+<area shape="rect" href="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="281,5,380,32">
--- /dev/null
+24da7041fa9ee873d9835dfd0e9a5326
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="249,5,407,32">
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="5,84,197,110">
-adc98e112bb9938acab1c866f3f8d1b8
\ No newline at end of file
+b3a85badbf3d629e2c7716abbe7dd5f1
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
<h1>src/lib/lightmediascanner_utils.h</h1><a href="lightmediascanner__utils_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef _LIGHTMEDIASCANNER_UTILS_H_</span>
<a name="l00022"></a><a class="code" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">00022</a> <span class="preprocessor"></span><span class="preprocessor">#define _LIGHTMEDIASCANNER_UTILS_H_ 1</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a>00057
<a name="l00058"></a>00058 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6">lms_strstrip</a>(<span class="keywordtype">char</span> *str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
-<a name="l00059"></a>00059 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 3);
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061
+<a name="l00059"></a>00059 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free</a>(<span class="keywordtype">char</span> **p_str, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *p_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00060"></a>00060 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">void</span> <a class="code" href="lightmediascanner__utils_8c.html#9ed157dee5c16f4c62c5ae6e281580cf">lms_string_size_strip_and_free</a>(<span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *p) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00061"></a>00061 <a class="code" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a> <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__utils_8c.html#71ee8b57cf7c5eba8ec0593e756d2529">lms_which_extension</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> name_len, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlms__string__size.html">lms_string_size</a> *exts, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exts_len) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 3);
<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="preprocessor">#ifdef __cplusplus</span>
-<a name="l00064"></a>00064 <span class="preprocessor"></span>}
-<a name="l00065"></a>00065 <span class="preprocessor">#endif</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_UTILS_H_ */</span>
-</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00066"></a>00066 <span class="preprocessor"></span>}
+<a name="l00067"></a>00067 <span class="preprocessor">#endif</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* _LIGHTMEDIASCANNER_UTILS_H_ */</span>
+</pre></div></div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>src/lib/lightmediascanner_utils.h File Reference</h1>
<p>
-This graph shows which files directly or indirectly include this file:<p><center><img src="lightmediascanner__utils_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_utils.hdep_map" alt=""></center>
+<div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__utils_8h__dep__incl.png" border="0" usemap="#src/lib/lightmediascanner_utils.hdep_map" alt=""></center>
<map name="src/lib/lightmediascanner_utils.hdep_map">
-<area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="255,81,441,108"><area shape="rect" href="lightmediascanner__utils_8c.html" title="src/lib/lightmediascanner_utils.c" alt="" coords="251,132,445,159"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="499,5,720,32"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="497,56,721,83"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="495,107,724,133"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="499,157,720,184"></map>
+<area shape="rect" href="lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="465,84,687,111"><area shape="rect" href="lightmediascanner__utils_8c.html" title="src/lib/lightmediascanner_utils.c" alt="" coords="711,84,943,111"><area shape="rect" href="lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="5,162,269,188"><area shape="rect" href="lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="293,162,563,188"><area shape="rect" href="lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="587,162,861,188"><area shape="rect" href="lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="885,162,1149,188"></map>
+</div>
<p>
<a href="lightmediascanner__utils_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">API void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#281568969e526a7bdf687da4d1cc75ab">lms_strstrip</a> (char *str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">API void API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#92c63007e7d04f626cafc6eef48f7022">lms_which_extension</a> (const char *name, unsigned int name_len, const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *exts, unsigned int exts_len) GNUC_NON_NULL(1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void API void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#01cee33e2410ae7081905a4e06d890cc">lms_strstrip_and_free</a> (char **p_str, unsigned int *p_len) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void API void API void </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#5a7e5da69500a12f447a77177dbb6e0d">lms_string_size_strip_and_free</a> (struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *p) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int </td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#7dfc23066442e00fff5cbe77e6f1426e">lms_which_extension</a> (const char *name, unsigned int name_len, const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *exts, unsigned int exts_len) GNUC_NON_NULL(1</td></tr>
</table>
<hr><h2>Define Documentation</h2>
Copyright (C) 2007 by INdT<p>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
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.<p>
-You should have received a copy of the GNU Lesser 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.<p>
+You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri <<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>> </dd></dl>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00022">22</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_utils.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00040">40</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_utils.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
<td class="paramtype"> <em>...</em> </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"></td>
+ <td></td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00041">41</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="13a0622cfcc91eec261da4285621bdcc"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_ARRAY_SIZE" ref="13a0622cfcc91eec261da4285621bdcc" args="(a)" -->
<td class="paramtype">a </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"> (sizeof(a) / sizeof(*a))</td>
+ <td> (sizeof(a) / sizeof(*a))</td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="786c453d995be000d52360f327a6816b"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_STATIC_STRING_SIZE" ref="786c453d995be000d52360f327a6816b" args="(s)" -->
<td class="paramtype">s </td>
<td class="paramname"> </td>
<td> ) </td>
- <td width="100%"> {s, sizeof(s) - 1}</td>
+ <td> {s, sizeof(s) - 1}</td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
</div>
</div><p>
<hr><h2>Function Documentation</h2>
+<a class="anchor" name="5a7e5da69500a12f447a77177dbb6e0d"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_string_size_strip_and_free" ref="5a7e5da69500a12f447a77177dbb6e0d" args="(struct lms_string_size *p) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API void API void API void lms_string_size_strip_and_free </td>
+ <td>(</td>
+ <td class="paramtype">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> * </td>
+ <td class="paramname"> <em>p</em> </td>
+ <td> ) </td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="structlms__string__size.html">lms_string_size</a> version of <a class="el" href="lightmediascanner__utils_8c.html#45d15c8bfeddaef0d5b1d0bd9ecc0c79">lms_strstrip_and_free()</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>*p</em> </td><td>pointer to <a class="el" href="structlms__string__size.html">lms_string_size</a> to be stripped.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>this will call free() on lms_string_size->str if it becomes empty. </dd></dl>
+
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">114</a> of file <a class="el" href="lightmediascanner__utils_8c-source.html">lightmediascanner_utils.c</a>.</p>
+
+<p>References <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">lms_string_size::len</a>, <a class="el" href="lightmediascanner__utils_8c-source.html#l00034">lms_strstrip()</a>, and <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">lms_string_size::str</a>.</p>
+
+<p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<p><center><img src="lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph.png" border="0" usemap="#lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph_map" alt=""></center>
+<map name="lightmediascanner__utils_8h_5a7e5da69500a12f447a77177dbb6e0d_cgraph_map">
+<area shape="rect" href="lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="281,5,380,32"></map>
+</div>
+
+</div>
+</div><p>
<a class="anchor" name="281568969e526a7bdf687da4d1cc75ab"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_strstrip" ref="281568969e526a7bdf687da4d1cc75ab" args="(char *str, unsigned int *p_len) GNUC_NON_NULL(1" -->
<div class="memitem">
<div class="memproto">
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="01cee33e2410ae7081905a4e06d890cc"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_strstrip_and_free" ref="01cee33e2410ae7081905a4e06d890cc" args="(char **p_str, unsigned int *p_len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">API void API void lms_strstrip_and_free </td>
+ <td>(</td>
+ <td class="paramtype">char ** </td>
+ <td class="paramname"> <em>p_str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int * </td>
+ <td class="paramname"> <em>p_len</em></td><td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
-<a class="anchor" name="92c63007e7d04f626cafc6eef48f7022"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_which_extension" ref="92c63007e7d04f626cafc6eef48f7022" args="(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) GNUC_NON_NULL(1" -->
+<a class="anchor" name="7dfc23066442e00fff5cbe77e6f1426e"></a><!-- doxytag: member="lightmediascanner_utils.h::lms_which_extension" ref="7dfc23066442e00fff5cbe77e6f1426e" args="(const char *name, unsigned int name_len, const struct lms_string_size *exts, unsigned int exts_len) GNUC_NON_NULL(1" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">API void API int lms_which_extension </td>
+ <td class="memname">API int lms_which_extension </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"> <em>name</em>, </td>
<tr>
<td></td>
<td>)</td>
- <td></td><td></td><td width="100%"></td>
+ <td></td><td></td><td></td>
</tr>
</table>
</div>
</div>
</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:57 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<area shape="rect" href="$lightmediascanner__utils_8c.html#086d2449129976541c66a83984bffbe6" title="lms_strstrip" alt="" coords="281,5,380,32">
--- /dev/null
+24da7041fa9ee873d9835dfd0e9a5326
\ No newline at end of file
-<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="255,81,441,108">
-<area shape="rect" href="$lightmediascanner__utils_8c.html" title="src/lib/lightmediascanner_utils.c" alt="" coords="251,132,445,159">
-<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="499,5,720,32">
-<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="497,56,721,83">
-<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="495,107,724,133">
-<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="499,157,720,184">
+<area shape="rect" href="$lightmediascanner__db_8h.html" title="src/lib/lightmediascanner_db.h" alt="" coords="465,84,687,111">
+<area shape="rect" href="$lightmediascanner__utils_8c.html" title="src/lib/lightmediascanner_utils.c" alt="" coords="711,84,943,111">
+<area shape="rect" href="$lightmediascanner__db__audio_8c.html" title="src/lib/lightmediascanner_db_audio.c" alt="" coords="5,162,269,188">
+<area shape="rect" href="$lightmediascanner__db__image_8c.html" title="src/lib/lightmediascanner_db_image.c" alt="" coords="293,162,563,188">
+<area shape="rect" href="$lightmediascanner__db__playlist_8c.html" title="src/lib/lightmediascanner_db_playlist.c" alt="" coords="587,162,861,188">
+<area shape="rect" href="$lightmediascanner__db__video_8c.html" title="src/lib/lightmediascanner_db_video.c" alt="" coords="885,162,1149,188">
-6c1cec54a95c40d2c24f0fa27d3ca603
\ No newline at end of file
+df8726f7d7945e004c69a7d7dafc25fb
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
</div>
-<h1>Light Media Scanner Modules</h1>Here is a list of all modules:<ul>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
<li><a class="el" href="group__LMS__API.html">User-API</a>
<li><a class="el" href="group__LMS__CHARSET.html">Charset Conversion</a>
<li><a class="el" href="group__LMS__DB.html">DataBase-API</a>
<li><a class="el" href="group__LMS__Plugin.html">Plugins-API</a>
</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: cinfo Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>cinfo Struct Reference</h1><!-- doxytag: class="cinfo" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
+<p>
+<div class="dynheader">
+Collaboration diagram for cinfo:</div>
+<div class="dynsection">
+<p><center><img src="structcinfo__coll__graph.png" border="0" usemap="#cinfo__coll__map" alt="Collaboration graph"></center>
+<map name="cinfo__coll__map">
+<area shape="rect" href="structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="60,483,204,758"><area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,398"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,194"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">lms</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00049">49</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="eff7e00325ac7d8674f42f4bfc198b5a"></a><!-- doxytag: member="cinfo::lms" ref="eff7e00325ac7d8674f42f4bfc198b5a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structlms.html">lms_t</a>* <a class="el" href="structcinfo.html#eff7e00325ac7d8674f42f4bfc198b5a">cinfo::lms</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
+</body>
+</html>
--- /dev/null
+<area shape="rect" href="$structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="60,483,204,758">
+<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,398">
+<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,194">
--- /dev/null
+d66944abf653c4abbaeca0b632cb80f3
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>fds Struct Reference</h1><!-- doxytag: class="fds" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00044">44</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00044">44</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="c49bfa8d58564d4c483eb434b9ff5710"></a><!-- doxytag: member="fds::r" ref="c49bfa8d58564d4c483eb434b9ff5710" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00045">45</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00045">45</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d13e19697072e306771103286a8316d0"></a><!-- doxytag: member="fds::w" ref="d13e19697072e306771103286a8316d0" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00046">46</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00046">46</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:58 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms Struct Reference</h1><!-- doxytag: class="lms" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
<p>
-Collaboration diagram for lms:<p><center><img src="structlms__coll__graph.png" border="0" usemap="#lms__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms:</div>
+<div class="dynsection">
+<p><center><img src="structlms__coll__graph.png" border="0" usemap="#lms__coll__map" alt="Collaboration graph"></center>
<map name="lms__coll__map">
-<area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="23,245,108,357"><area shape="rect" title="parsers" alt="" coords="61,353,69,361"><area shape="rect" title="parsers" alt="" coords="61,417,69,425"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="25,5,105,181"><area shape="rect" title="plugin" alt="" coords="61,177,69,185"><area shape="rect" title="plugin" alt="" coords="61,241,69,249"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,398"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,194"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structparser.html">parser</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structparser.html">parser</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a></td></tr>
+<tr><td class="memItemLeft" nowrap>struct {</td></tr>
+
+<tr><td class="memItemLeft" nowrap> <a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">cb</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap> void * <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">data</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap> <a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">free_data</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">progress</a></td></tr>
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>:1</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">stop_processing</a>:1</td></tr>
+
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00076">76</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="52883423c9a1276420ba2bb9b50a138c"></a><!-- doxytag: member="lms::parsers" ref="52883423c9a1276420ba2bb9b50a138c" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00065">65</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00190">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00249">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00077">77</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00219">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00278">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="9cdd3a937a0a2bd4515e9e888bb519e3"></a><!-- doxytag: member="lms::n_parsers" ref="9cdd3a937a0a2bd4515e9e888bb519e3" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00066">66</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00190">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00249">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00078">78</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00219">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00278">lms_parser_del_int()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="eba2db305bafddedf143ff7b9f2396db"></a><!-- doxytag: member="lms::cs_conv" ref="eba2db305bafddedf143ff7b9f2396db" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00451">lms_charset_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00474">lms_charset_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00079">79</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00480">lms_charset_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00503">lms_charset_del()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="02e767169813808f193c23733ba89b4b"></a><!-- doxytag: member="lms::db_path" ref="02e767169813808f193c23733ba89b4b" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00068">68</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00340">lms_get_db_path()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00080">80</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00369">lms_get_db_path()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="0f545adf2fc37994b7f55f7ea7aac555"></a><!-- doxytag: member="lms::slave_timeout" ref="0f545adf2fc37994b7f55f7ea7aac555" args="" -->
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00081">81</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00391">lms_get_slave_timeout()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00411">lms_set_slave_timeout()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="94615d22fba40d580a8a0055d28221c4"></a><!-- doxytag: member="lms::cb" ref="94615d22fba40d580a8a0055d28221c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="lightmediascanner_8h.html#117b4bb24ec8fc48fc4e6f0d7fa9ea3a">lms_progress_callback_t</a> <a class="el" href="structlms.html#94615d22fba40d580a8a0055d28221c4">lms::cb</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00083">83</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00193">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="2416f15bfd15aaa5e75606b5a0686362"></a><!-- doxytag: member="lms::data" ref="2416f15bfd15aaa5e75606b5a0686362" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* <a class="el" href="structlms.html#2416f15bfd15aaa5e75606b5a0686362">lms::data</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00084">84</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00193">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f04a1830b8ffa69c9da089b7e6fb258"></a><!-- doxytag: member="lms::free_data" ref="3f04a1830b8ffa69c9da089b7e6fb258" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="lightmediascanner_8h.html#55ee3894f334dc5b30431bf94971f110">lms_free_callback_t</a> <a class="el" href="structlms.html#3f04a1830b8ffa69c9da089b7e6fb258">lms::free_data</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00069">69</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00085">85</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00193">lms_set_progress_callback()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="3f4bc299aa74c9255b730e106e0e7a8f"></a><!-- doxytag: member="lms::progress" ref="3f4bc299aa74c9255b730e106e0e7a8f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct { ... } <a class="el" href="structlms.html#3f4bc299aa74c9255b730e106e0e7a8f">lms::progress</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00362">lms_get_slave_timeout()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00382">lms_set_slave_timeout()</a>.
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00193">lms_set_progress_callback()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="1dc82aac2ab3ff643027878bb1aa3cb8"></a><!-- doxytag: member="lms::commit_interval" ref="1dc82aac2ab3ff643027878bb1aa3cb8" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00404">lms_get_commit_interval()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00427">lms_set_commit_interval()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00087">87</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00433">lms_get_commit_interval()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00119">lms_new()</a>, and <a class="el" href="lightmediascanner_8c-source.html#l00456">lms_set_commit_interval()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="bb03533445b77299e964b2ec02bca039"></a><!-- doxytag: member="lms::is_processing" ref="bb03533445b77299e964b2ec02bca039" args="" -->
<p>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00088">88</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00350">lms_is_processing()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00219">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01079">lms_stop_processing()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="d028e3681568215f6facd7d477c74461"></a><!-- doxytag: member="lms::stop_processing" ref="d028e3681568215f6facd7d477c74461" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int <a class="el" href="structlms.html#d028e3681568215f6facd7d477c74461">lms::stop_processing</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00157">lms_free()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00321">lms_is_processing()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00190">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00089">89</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01079">lms_stop_processing()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>lms_audio_info Struct Reference<br>
<small>
[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
</h1><!-- doxytag: class="lms_audio_info" --><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code>
<p>
-Collaboration diagram for lms_audio_info:<p><center><img src="structlms__audio__info__coll__graph.png" border="0" usemap="#lms__audio__info__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms_audio_info:</div>
+<div class="dynsection">
+<p><center><img src="structlms__audio__info__coll__graph.png" border="0" usemap="#lms__audio__info__coll__map" alt="Collaboration graph"></center>
<map name="lms__audio__info__coll__map">
-<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,109,101"><area shape="rect" title="title\nartist\nalbum\ngenre" alt="" coords="53,97,61,105"><area shape="rect" title="title\nartist\nalbum\ngenre" alt="" coords="53,209,61,217"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,6,128,107"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00086">86</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00086">86</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="b59ffe210521786be5fe579167b24bc4"></a><!-- doxytag: member="lms_audio_info::id" ref="b59ffe210521786be5fe579167b24bc4" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00087">87</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00648">lms_db_audio_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00087">87</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__audio_8c-source.html#l00694">lms_db_audio_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c87982b6b219add6aff3ce9c25fe00bf"></a><!-- doxytag: member="lms_audio_info::title" ref="c87982b6b219add6aff3ce9c25fe00bf" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00088">88</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00088">88</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6f9fa88539da4867bc34fa1e7c17816c"></a><!-- doxytag: member="lms_audio_info::artist" ref="6f9fa88539da4867bc34fa1e7c17816c" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00089">89</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00089">89</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="caeda14ddf0051e9dd69861171fb66a2"></a><!-- doxytag: member="lms_audio_info::album" ref="caeda14ddf0051e9dd69861171fb66a2" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00090">90</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00090">90</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="72efb9991c5f49eabd62aa61ead91031"></a><!-- doxytag: member="lms_audio_info::genre" ref="72efb9991c5f49eabd62aa61ead91031" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00091">91</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00091">91</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="7197e471d313274c4e361b2ff9e60e8a"></a><!-- doxytag: member="lms_audio_info::playcnt" ref="7197e471d313274c4e361b2ff9e60e8a" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00092">92</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00092">92</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d372f08ada955f75be8f218d90093242"></a><!-- doxytag: member="lms_audio_info::trackno" ref="d372f08ada955f75be8f218d90093242" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00093">93</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="932e73ccd8ff946831930be65d1ba2d2"></a><!-- doxytag: member="lms_audio_info::rating" ref="932e73ccd8ff946831930be65d1ba2d2" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00094">94</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00094">94</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,109,101">
-<area shape="rect" title="title\nartist\nalbum\ngenre" alt="" coords="53,97,61,105">
-<area shape="rect" title="title\nartist\nalbum\ngenre" alt="" coords="53,209,61,217">
+<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,6,128,107">
-c7008461ae99ff64e800f12d9eac3b09
\ No newline at end of file
+e0be3b7945b4f70a98ee5623dfde7333
\ No newline at end of file
-<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="23,245,108,357">
-<area shape="rect" title="parsers" alt="" coords="61,353,69,361">
-<area shape="rect" title="parsers" alt="" coords="61,417,69,425">
-<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="25,5,105,181">
-<area shape="rect" title="plugin" alt="" coords="61,177,69,185">
-<area shape="rect" title="plugin" alt="" coords="61,241,69,249">
+<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,398">
+<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,194">
-56358638e762e6352c9d8267ea330915
\ No newline at end of file
+75efd8910a178f7b8b334455f4f34abf
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_context Struct Reference</h1><!-- doxytag: class="lms_context" --><code>#include <<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>></code>
<p>
+<div class="dynheader">
+Collaboration diagram for lms_context:</div>
+<div class="dynsection">
+<p><center><img src="structlms__context__coll__graph.png" border="0" usemap="#lms__context__coll__map" alt="Collaboration graph"></center>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00143">143</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00143">143</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="310d38a2fab9ecea67601d0c6a3d8d81"></a><!-- doxytag: member="lms_context::db" ref="310d38a2fab9ecea67601d0c6a3d8d81" args="" -->
<div class="memitem">
<div class="memproto">
<p>
database instance
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00144">144</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00144">144</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="a5ce50393bbe62f6357934a1d9ce5a61"></a><!-- doxytag: member="lms_context::cs_conv" ref="a5ce50393bbe62f6357934a1d9ce5a61" args="" -->
<p>
charset conversion tool
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00145">145</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
--- /dev/null
+2b9e69086ae997b1388bfb3cf5516287
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_db_cache Struct Reference</h1><!-- doxytag: class="lms_db_cache" --><code>#include <<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>></code>
<p>
-Collaboration diagram for lms_db_cache:<p><center><img src="structlms__db__cache__coll__graph.png" border="0" usemap="#lms__db__cache__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms_db_cache:</div>
+<div class="dynsection">
+<p><center><img src="structlms__db__cache__coll__graph.png" border="0" usemap="#lms__db__cache__coll__map" alt="Collaboration graph"></center>
<map name="lms__db__cache__coll__map">
-<area shape="rect" href="structlms__db__cache__entry.html" title="{lms_db_cache_entry\n|+ db\l+ data\l|}" alt="" coords="5,5,136,101"><area shape="rect" title="entries" alt="" coords="67,97,75,105"><area shape="rect" title="entries" alt="" coords="67,161,75,169"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__db__cache__entry.html" title="{lms_db_cache_entry\n|+ db\l+ data\l|}" alt="" coords="5,5,165,107"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="b325e01e42fd3b0f11d52328522c6414"></a><!-- doxytag: member="lms_db_cache::size" ref="b325e01e42fd3b0f11d52328522c6414" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="0056bfe95b38863dc9b067d699230690"></a><!-- doxytag: member="lms_db_cache::entries" ref="0056bfe95b38863dc9b067d699230690" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__db__cache__entry.html" title="{lms_db_cache_entry\n|+ db\l+ data\l|}" alt="" coords="5,5,136,101">
-<area shape="rect" title="entries" alt="" coords="67,97,75,105">
-<area shape="rect" title="entries" alt="" coords="67,161,75,169">
+<area shape="rect" href="$structlms__db__cache__entry.html" title="{lms_db_cache_entry\n|+ db\l+ data\l|}" alt="" coords="5,5,165,107">
-5d26d8dd87da6e66eaffed71640915d7
\ No newline at end of file
+e804c7879db75bc661f4f6c4594184b0
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_db_cache_entry Struct Reference</h1><!-- doxytag: class="lms_db_cache_entry" --><code>#include <<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="01aadf6d9a8161696019d39566b15760"></a><!-- doxytag: member="lms_db_cache_entry::db" ref="01aadf6d9a8161696019d39566b15760" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="53488063740ff72c830be3103e7150fe"></a><!-- doxytag: member="lms_db_cache_entry::data" ref="53488063740ff72c830be3103e7150fe" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00387">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00417">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00442">lms_db_cache_get()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00407">lms_db_cache_add()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00437">lms_db_cache_del()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00462">lms_db_cache_get()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>lms_file_info Struct Reference</h1><!-- doxytag: class="lms_file_info" --><code>#include <<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00133">133</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00133">133</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="1fa6966afec95bbb00ee01f345948e44"></a><!-- doxytag: member="lms_file_info::path" ref="1fa6966afec95bbb00ee01f345948e44" args="" -->
<div class="memitem">
<div class="memproto">
<p>
file path
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">134</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00134">134</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="9d74df2696cfd0f516e61e9db2b35731"></a><!-- doxytag: member="lms_file_info::path_len" ref="9d74df2696cfd0f516e61e9db2b35731" args="" -->
<p>
path length
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">135</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00135">135</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="ccc82711360714ff6ccd373fb7a42112"></a><!-- doxytag: member="lms_file_info::base" ref="ccc82711360714ff6ccd373fb7a42112" args="" -->
<p>
index of basename inside path
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00136">136</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00136">136</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="d68ded5c64ae28a4976637f8483e9cfe"></a><!-- doxytag: member="lms_file_info::id" ref="d68ded5c64ae28a4976637f8483e9cfe" args="" -->
<p>
database id
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">137</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00697">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00137">137</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00717">lms_db_delete_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="4aa878eefdde84541021087192b9dacd"></a><!-- doxytag: member="lms_file_info::mtime" ref="4aa878eefdde84541021087192b9dacd" args="" -->
<p>
in-disk modification time
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">138</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00138">138</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="570ae808983e67ae7b22a2fec892cffd"></a><!-- doxytag: member="lms_file_info::dtime" ref="570ae808983e67ae7b22a2fec892cffd" args="" -->
<p>
deletion time
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">139</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00727">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00139">139</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00747">lms_db_set_file_dtime()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="b318b81fc934636a904f5d84efe8c1ee"></a><!-- doxytag: member="lms_file_info::size" ref="b318b81fc934636a904f5d84efe8c1ee" args="" -->
<p>
file size in bytes
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">140</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00567">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00653">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00609">lms_db_update_file_info()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00140">140</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__common_8c-source.html#l00587">lms_db_get_file_info()</a>, <a class="el" href="lightmediascanner__db__common_8c-source.html#l00673">lms_db_insert_file_info()</a>, and <a class="el" href="lightmediascanner__db__common_8c-source.html#l00629">lms_db_update_file_info()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_gps_info Struct Reference<br>
<small>
[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00061">61</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00061">61</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="70f152098accf3d46f18bc159e3b4359"></a><!-- doxytag: member="lms_gps_info::latitude" ref="70f152098accf3d46f18bc159e3b4359" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00062">62</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="109202a83eb79b9a10df135600260e1b"></a><!-- doxytag: member="lms_gps_info::longitude" ref="109202a83eb79b9a10df135600260e1b" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="9b56b5dbae3e5c5722f7331c2bcbd520"></a><!-- doxytag: member="lms_gps_info::altitude" ref="9b56b5dbae3e5c5722f7331c2bcbd520" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>lms_image_info Struct Reference<br>
<small>
[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
</h1><!-- doxytag: class="lms_image_info" --><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code>
<p>
-Collaboration diagram for lms_image_info:<p><center><img src="structlms__image__info__coll__graph.png" border="0" usemap="#lms__image__info__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms_image_info:</div>
+<div class="dynsection">
+<p><center><img src="structlms__image__info__coll__graph.png" border="0" usemap="#lms__image__info__coll__map" alt="Collaboration graph"></center>
<map name="lms__image__info__coll__map">
-<area shape="rect" href="structlms__gps__info.html" title="{lms_gps_info\n|+ latitude\l+ longitude\l+ altitude\l|}" alt="" coords="5,5,99,117"><area shape="rect" title="gps" alt="" coords="63,113,71,121"><area shape="rect" title="gps" alt="" coords="84,193,92,201"><area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="123,13,227,109"><area shape="rect" title="title\nartist" alt="" coords="157,105,165,113"><area shape="rect" title="title\nartist" alt="" coords="135,193,143,201"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__gps__info.html" title="{lms_gps_info\n|+ latitude\l+ longitude\l+ altitude\l|}" alt="" coords="5,7,109,124"><area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="133,15,256,116"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__gps__info.html">lms_gps_info</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__gps__info.html">lms_gps_info</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="e6af5a9d85600a7694991681d141844b"></a><!-- doxytag: member="lms_image_info::id" ref="e6af5a9d85600a7694991681d141844b" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00068">68</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00273">lms_db_image_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00068">68</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__image_8c-source.html#l00293">lms_db_image_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="6242d231ae1972fb25bdaeed614d7a63"></a><!-- doxytag: member="lms_image_info::title" ref="6242d231ae1972fb25bdaeed614d7a63" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00069">69</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00069">69</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="ee7b8401f3272a0855ea27a2249a8aab"></a><!-- doxytag: member="lms_image_info::artist" ref="ee7b8401f3272a0855ea27a2249a8aab" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="150973d3ac9f60f1b74f0a0d08c7f288"></a><!-- doxytag: member="lms_image_info::date" ref="150973d3ac9f60f1b74f0a0d08c7f288" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="fbd2df9f6f5f290ac02ce4d803677249"></a><!-- doxytag: member="lms_image_info::width" ref="fbd2df9f6f5f290ac02ce4d803677249" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f2ae81781dadf7ecaa307b3bc91e710e"></a><!-- doxytag: member="lms_image_info::height" ref="f2ae81781dadf7ecaa307b3bc91e710e" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00073">73</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00073">73</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="434330468b69d0f14b344c672d4778af"></a><!-- doxytag: member="lms_image_info::orientation" ref="434330468b69d0f14b344c672d4778af" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00074">74</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00074">74</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="2f003c2cfb937ed5d667a188ba0d54e3"></a><!-- doxytag: member="lms_image_info::gps" ref="2f003c2cfb937ed5d667a188ba0d54e3" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00075">75</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00075">75</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__gps__info.html" title="{lms_gps_info\n|+ latitude\l+ longitude\l+ altitude\l|}" alt="" coords="5,5,99,117">
-<area shape="rect" title="gps" alt="" coords="63,113,71,121">
-<area shape="rect" title="gps" alt="" coords="84,193,92,201">
-<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="123,13,227,109">
-<area shape="rect" title="title\nartist" alt="" coords="157,105,165,113">
-<area shape="rect" title="title\nartist" alt="" coords="135,193,143,201">
+<area shape="rect" href="$structlms__gps__info.html" title="{lms_gps_info\n|+ latitude\l+ longitude\l+ altitude\l|}" alt="" coords="5,7,109,124">
+<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="133,15,256,116">
-ca323b96e715712e3e3f470c8b804d76
\ No newline at end of file
+99371c771b39a024f9b4b7298cf782c8
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_playlist_info Struct Reference<br>
<small>
[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
</h1><!-- doxytag: class="lms_playlist_info" --><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code>
<p>
-Collaboration diagram for lms_playlist_info:<p><center><img src="structlms__playlist__info__coll__graph.png" border="0" usemap="#lms__playlist__info__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms_playlist_info:</div>
+<div class="dynsection">
+<p><center><img src="structlms__playlist__info__coll__graph.png" border="0" usemap="#lms__playlist__info__coll__map" alt="Collaboration graph"></center>
<map name="lms__playlist__info__coll__map">
-<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="11,5,115,101"><area shape="rect" title="title" alt="" coords="59,97,67,105"><area shape="rect" title="title" alt="" coords="59,161,67,169"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="8,6,131,107"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">n_entries</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00119">119</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00119">119</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="c1b12bb87ec0bdbc356a6f6ce9b7eebf"></a><!-- doxytag: member="lms_playlist_info::id" ref="c1b12bb87ec0bdbc356a6f6ce9b7eebf" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00120">120</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00237">lms_db_playlist_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00120">120</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__playlist_8c-source.html#l00257">lms_db_playlist_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="515e63ba413a60d21ee73687151387f0"></a><!-- doxytag: member="lms_playlist_info::title" ref="515e63ba413a60d21ee73687151387f0" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00121">121</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00121">121</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="81cc52f5b6ce04cd64cf3884cb774663"></a><!-- doxytag: member="lms_playlist_info::n_entries" ref="81cc52f5b6ce04cd64cf3884cb774663" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00122">122</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00122">122</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="11,5,115,101">
-<area shape="rect" title="title" alt="" coords="59,97,67,105">
-<area shape="rect" title="title" alt="" coords="59,161,67,169">
+<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="8,6,131,107">
-ede7ac5cfd36a43bf5db1e6c87fe9f7a
\ No newline at end of file
+478d04b378df976299f9ea51b47f3f5b
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
-</div>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
<h1>lms_plugin Struct Reference</h1><!-- doxytag: class="lms_plugin" --><code>#include <<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">name</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00155">155</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00155">155</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="2048d92b3d8918a6a2bb2cf39a375e9a"></a><!-- doxytag: member="lms_plugin::name" ref="2048d92b3d8918a6a2bb2cf39a375e9a" args="" -->
<div class="memitem">
<div class="memproto">
<p>
plugin name
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">156</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00156">156</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="5b532e6e50911f02fd9e123489c62a0f"></a><!-- doxytag: member="lms_plugin::match" ref="5b532e6e50911f02fd9e123489c62a0f" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lms_plugin_match_fn_t</a> <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin::match</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#558e8f031ecb3e6b8adf7d98f3e4fcd6">lms_plugin_match_fn_t</a> <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin::match</a> </td>
</tr>
</table>
</div>
<p>
check match
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00157">157</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00157">157</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="0d3361b489eb7c7c4ecc7917c0390b9e"></a><!-- doxytag: member="lms_plugin::parse" ref="0d3361b489eb7c7c4ecc7917c0390b9e" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lms_plugin_parse_fn_t</a> <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin::parse</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#649350fd7015fa63ca86c43906c3f175">lms_plugin_parse_fn_t</a> <a class="el" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">lms_plugin::parse</a> </td>
</tr>
</table>
</div>
<p>
parse matched file
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00158">158</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00158">158</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="4921b3b79c7ecdddbe9f1a7c9f5019c7"></a><!-- doxytag: member="lms_plugin::close" ref="4921b3b79c7ecdddbe9f1a7c9f5019c7" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lms_plugin_close_fn_t</a> <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin::close</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#44576c68c208c78f34f41fcd6c7c2c4b">lms_plugin_close_fn_t</a> <a class="el" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">lms_plugin::close</a> </td>
</tr>
</table>
</div>
<p>
close plugin
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00159">159</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00159">159</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="aeff2e030242ffdf3bdc512a5ef6cbec"></a><!-- doxytag: member="lms_plugin::setup" ref="aeff2e030242ffdf3bdc512a5ef6cbec" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lms_plugin_setup_fn_t</a> <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin::setup</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#6bfa82e6e83e85747048f41dfb334acd">lms_plugin_setup_fn_t</a> <a class="el" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">lms_plugin::setup</a> </td>
</tr>
</table>
</div>
<p>
setup (1st phase init)
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00160">160</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00160">160</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="b3dffd208749a53ad2eb5ffb6d1b7d07"></a><!-- doxytag: member="lms_plugin::start" ref="b3dffd208749a53ad2eb5ffb6d1b7d07" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lms_plugin_start_fn_t</a> <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin::start</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#875d300da41e72865452c6ae44687b77">lms_plugin_start_fn_t</a> <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin::start</a> </td>
</tr>
</table>
</div>
<p>
start (2nd phase init)
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00161">161</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="839d286e12caa0711f3987adb4b803f0"></a><!-- doxytag: member="lms_plugin::finish" ref="839d286e12caa0711f3987adb4b803f0" args="" -->
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lms_plugin_finish_fn_t</a> <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin::finish</a> </td>
+ <td class="memname"><a class="el" href="lightmediascanner__plugin_8h.html#c72facc8d4fa98f660fd064c80d5b321">lms_plugin_finish_fn_t</a> <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin::finish</a> </td>
</tr>
</table>
</div>
<p>
finish plugin
-<p>
-Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">162</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__plugin_8h-source.html#l00162">162</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_string_size Struct Reference</h1><!-- doxytag: class="lms_string_size" --><code>#include <<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00049">49</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00049">49</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="5f4844463b193dadb2286e69200ce8a7"></a><!-- doxytag: member="lms_string_size::str" ref="5f4844463b193dadb2286e69200ce8a7" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00069">lms_which_extension()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>, and <a class="el" href="lightmediascanner__utils_8c-source.html#l00138">lms_which_extension()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="fc37b712d71c2010e655bbd4f0a22e96"></a><!-- doxytag: member="lms_string_size::len" ref="fc37b712d71c2010e655bbd4f0a22e96" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">51</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__utils_8h-source.html#l00051">51</a> of file <a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__utils_8c-source.html#l00114">lms_string_size_strip_and_free()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>lms_video_info Struct Reference<br>
<small>
[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
</h1><!-- doxytag: class="lms_video_info" --><code>#include <<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>></code>
<p>
-Collaboration diagram for lms_video_info:<p><center><img src="structlms__video__info__coll__graph.png" border="0" usemap="#lms__video__info__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for lms_video_info:</div>
+<div class="dynsection">
+<p><center><img src="structlms__video__info__coll__graph.png" border="0" usemap="#lms__video__info__coll__map" alt="Collaboration graph"></center>
<map name="lms__video__info__coll__map">
-<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,109,101"><area shape="rect" title="title\nartist" alt="" coords="53,97,61,105"><area shape="rect" title="title\nartist" alt="" coords="53,177,61,185"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,128,107"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00105">105</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00105">105</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="12b5bc5f8b13bdcb3ee1e919a1e05822"></a><!-- doxytag: member="lms_video_info::id" ref="12b5bc5f8b13bdcb3ee1e919a1e05822" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00106">106</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00249">lms_db_video_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00106">106</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__db__video_8c-source.html#l00269">lms_db_video_add()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f3b8a8168ec317daef65da3b06f72bc0"></a><!-- doxytag: member="lms_video_info::title" ref="f3b8a8168ec317daef65da3b06f72bc0" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00107">107</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00107">107</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="c0bfe0cf4fe29e3c24a6df4248c7640e"></a><!-- doxytag: member="lms_video_info::artist" ref="c0bfe0cf4fe29e3c24a6df4248c7640e" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__db_8h-source.html#l00108">108</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,109,101">
-<area shape="rect" title="title\nartist" alt="" coords="53,97,61,105">
-<area shape="rect" title="title\nartist" alt="" coords="53,177,61,185">
+<area shape="rect" href="$structlms__string__size.html" title="{lms_string_size\n|+ str\l+ len\l|}" alt="" coords="5,5,128,107">
-affb01d2ca5625f9c002e3364b21c1de
\ No newline at end of file
+c02273d822e27764a24ef9fadbf38980
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>parser Struct Reference</h1><!-- doxytag: class="parser" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
<p>
-Collaboration diagram for parser:<p><center><img src="structparser__coll__graph.png" border="0" usemap="#parser__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for parser:</div>
+<div class="dynsection">
+<p><center><img src="structparser__coll__graph.png" border="0" usemap="#parser__coll__map" alt="Collaboration graph"></center>
<map name="parser__coll__map">
-<area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="8,5,88,181"><area shape="rect" title="plugin" alt="" coords="44,177,52,185"><area shape="rect" title="plugin" alt="" coords="44,241,52,249"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="9,7,97,194"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.<hr><h2>Field Documentation</h2>
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00070">70</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
<a class="anchor" name="6c71e3299d4bac660320e7ca935f9b32"></a><!-- doxytag: member="parser::plugin" ref="6c71e3299d4bac660320e7ca935f9b32" args="" -->
<div class="memitem">
<div class="memproto">
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00289">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00071">71</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00219">lms_parser_add()</a>, <a class="el" href="lightmediascanner_8c-source.html#l00318">lms_parser_del()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00367">lms_parsers_check_using()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00345">lms_parsers_finish()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00387">lms_parsers_run()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00293">lms_parsers_setup()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00319">lms_parsers_start()</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="3dd2a049d1cd9229ec33645e28803e0a"></a><!-- doxytag: member="parser::dl_handle" ref="3dd2a049d1cd9229ec33645e28803e0a" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00060">60</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00072">72</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
</div>
</div><p>
<a class="anchor" name="f29cac42dbdf498606fae3f5b9fc3762"></a><!-- doxytag: member="parser::so_path" ref="f29cac42dbdf498606fae3f5b9fc3762" args="" -->
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00061">61</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00235">lms_parser_find_and_add()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00073">73</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner_8c-source.html#l00264">lms_parser_find_and_add()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="8,5,88,181">
-<area shape="rect" title="plugin" alt="" coords="44,177,52,185">
-<area shape="rect" title="plugin" alt="" coords="44,241,52,249">
+<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="9,7,97,194">
-41c356210d44353f0ab99eadd6a24cbd
\ No newline at end of file
+8e425c85a8b02b1c8849b61d62328509
\ No newline at end of file
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
-<!-- Generated by Doxygen 1.5.2 -->
-<div class="tabs">
- <ul>
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
-</div>
-<div class="tabs">
- <ul>
- <li><a href="classes.html"><span>Alphabetical List</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
</div>
+<div class="contents">
<h1>pinfo Struct Reference</h1><!-- doxytag: class="pinfo" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
<p>
-Collaboration diagram for pinfo:<p><center><img src="structpinfo__coll__graph.png" border="0" usemap="#pinfo__coll__map" alt="Collaboration graph"></center>
+<div class="dynheader">
+Collaboration diagram for pinfo:</div>
+<div class="dynsection">
+<p><center><img src="structpinfo__coll__graph.png" border="0" usemap="#pinfo__coll__map" alt="Collaboration graph"></center>
<map name="pinfo__coll__map">
-<area shape="rect" href="structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ commit_interval\l+ is_processing\l|}" alt="" coords="5,421,125,597"><area shape="rect" title="lms" alt="" coords="89,593,97,601"><area shape="rect" title="lms" alt="" coords="116,673,124,681"><area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="23,245,108,357"><area shape="rect" title="parsers" alt="" coords="61,353,69,361"><area shape="rect" title="parsers" alt="" coords="61,417,69,425"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="25,5,105,181"><area shape="rect" title="plugin" alt="" coords="61,177,69,185"><area shape="rect" title="plugin" alt="" coords="61,241,69,249"><area shape="rect" href="structfds.html" title="{fds\n|+ r\l+ w\l|}" alt="" coords="149,461,189,557"><area shape="rect" title="slave\nmaster" alt="" coords="160,553,168,561"><area shape="rect" title="slave\nmaster" alt="" coords="147,673,155,681"></map>
-<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><table border="0" cellpadding="0" cellspacing="0">
+<area shape="rect" href="structcinfo.html" title="{cinfo\n|+ lms\l|}" alt="" coords="89,833,148,916"><area shape="rect" href="structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="47,483,191,757"><area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,397"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,193"><area shape="rect" href="structfds.html" title="{fds\n|+ r\l+ w\l|}" alt="" coords="185,824,231,925"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structfds.html">fds</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcinfo.html">cinfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">common</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structfds.html">fds</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">pollfd </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structfds.html">fds</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structfds.html">fds</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct pollfd </td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-<p>
-
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00050">50</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.<hr><h2>Field Documentation</h2>
-<a class="anchor" name="246dfd29e81101866ccb01cc70224156"></a><!-- doxytag: member="pinfo::master" ref="246dfd29e81101866ccb01cc70224156" args="" -->
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="46a4fc606bd47def48714760afcbc18b"></a><!-- doxytag: member="pinfo::common" ref="46a4fc606bd47def48714760afcbc18b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo::master</a><code> [read]</code> </td>
+ <td class="memname">struct <a class="el" href="structcinfo.html">cinfo</a> <a class="el" href="structpinfo.html#46a4fc606bd47def48714760afcbc18b">pinfo::common</a><code> [read]</code> </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00051">51</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00566">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00604">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00641">lms_finish_slave()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00900">lms_check()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01002">lms_process()</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="62bbc538af7f9e1d6aa9073458d5cc52"></a><!-- doxytag: member="pinfo::slave" ref="62bbc538af7f9e1d6aa9073458d5cc52" args="" -->
+<a class="anchor" name="d31b28f6373d19531cd208c4c2a71a51"></a><!-- doxytag: member="pinfo::child" ref="d31b28f6373d19531cd208c4c2a71a51" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo::slave</a><code> [read]</code> </td>
+ <td class="memname">pid_t <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo::child</a> </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00052">52</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00566">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00604">lms_create_slave()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00056">56</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00671">lms_finish_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="ee9c21ae165e7daf968a7ed87c736076"></a><!-- doxytag: member="pinfo::poll" ref="ee9c21ae165e7daf968a7ed87c736076" args="" -->
+<a class="anchor" name="246dfd29e81101866ccb01cc70224156"></a><!-- doxytag: member="pinfo::master" ref="246dfd29e81101866ccb01cc70224156" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">struct pollfd <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo::poll</a><code> [read]</code> </td>
+ <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo::master</a><code> [read]</code> </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00053">53</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00577">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00664">lms_restart_slave()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00057">57</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00671">lms_finish_slave()</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="9958e1d447ffadf40c871a6cdaa86b4c"></a><!-- doxytag: member="pinfo::lms" ref="9958e1d447ffadf40c871a6cdaa86b4c" args="" -->
+<a class="anchor" name="62bbc538af7f9e1d6aa9073458d5cc52"></a><!-- doxytag: member="pinfo::slave" ref="62bbc538af7f9e1d6aa9073458d5cc52" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structlms.html">lms_t</a>* <a class="el" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">pinfo::lms</a> </td>
+ <td class="memname">struct <a class="el" href="structfds.html">fds</a> <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo::slave</a><code> [read]</code> </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00054">54</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00618">lms_check()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00604">lms_create_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00058">58</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00596">lms_close_pipes()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00634">lms_create_slave()</a>.</p>
+
</div>
</div><p>
-<a class="anchor" name="d31b28f6373d19531cd208c4c2a71a51"></a><!-- doxytag: member="pinfo::child" ref="d31b28f6373d19531cd208c4c2a71a51" args="" -->
+<a class="anchor" name="ee9c21ae165e7daf968a7ed87c736076"></a><!-- doxytag: member="pinfo::poll" ref="ee9c21ae165e7daf968a7ed87c736076" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">pid_t <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo::child</a> </td>
+ <td class="memname">struct pollfd <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo::poll</a><code> [read]</code> </td>
</tr>
</table>
</div>
<p>
-<p>
-Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00055">55</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.
-<p>
-Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00604">lms_create_slave()</a>, <a class="el" href="lightmediascanner__process_8c-source.html#l00641">lms_finish_slave()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00664">lms_restart_slave()</a>.
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00059">59</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00607">lms_create_pipes()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l00694">lms_restart_slave()</a>.</p>
+
</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
-<area shape="rect" href="$structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ commit_interval\l+ is_processing\l|}" alt="" coords="5,421,125,597">
-<area shape="rect" title="lms" alt="" coords="89,593,97,601">
-<area shape="rect" title="lms" alt="" coords="116,673,124,681">
-<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="23,245,108,357">
-<area shape="rect" title="parsers" alt="" coords="61,353,69,361">
-<area shape="rect" title="parsers" alt="" coords="61,417,69,425">
-<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="25,5,105,181">
-<area shape="rect" title="plugin" alt="" coords="61,177,69,185">
-<area shape="rect" title="plugin" alt="" coords="61,241,69,249">
-<area shape="rect" href="$structfds.html" title="{fds\n|+ r\l+ w\l|}" alt="" coords="149,461,189,557">
-<area shape="rect" title="slave\nmaster" alt="" coords="160,553,168,561">
-<area shape="rect" title="slave\nmaster" alt="" coords="147,673,155,681">
+<area shape="rect" href="$structcinfo.html" title="{cinfo\n|+ lms\l|}" alt="" coords="89,833,148,916">
+<area shape="rect" href="$structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="47,483,191,757">
+<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,397">
+<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,7,263,193">
+<area shape="rect" href="$structfds.html" title="{fds\n|+ r\l+ w\l|}" alt="" coords="185,824,231,925">
-e8aa5ab1319012540c6e71adc8699ec9
\ No newline at end of file
+5afaf47859ff93f3e06aa9d66402d28c
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Light Media Scanner: sinfo Struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.6 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li class="current"><a href="classes.html"><span>Data Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="classes.html"><span>Alphabetical List</span></a></li>
+ <li><a href="annotated.html"><span>Data Structures</span></a></li>
+ <li><a href="functions.html"><span>Data Fields</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>sinfo Struct Reference</h1><!-- doxytag: class="sinfo" --><code>#include <<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>></code>
+<p>
+<div class="dynheader">
+Collaboration diagram for sinfo:</div>
+<div class="dynsection">
+<p><center><img src="structsinfo__coll__graph.png" border="0" usemap="#sinfo__coll__map" alt="Collaboration graph"></center>
+<map name="sinfo__coll__map">
+<area shape="rect" href="structcinfo.html" title="{cinfo\n|+ lms\l|}" alt="" coords="89,885,148,968"><area shape="rect" href="structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="47,482,191,757"><area shape="rect" href="structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,397"><area shape="rect" href="structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,6,263,193"></map>
+<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcinfo.html">cinfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">common</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void ** </td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">parser_match</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">commit_counter</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00063">63</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="aa9d846b49c394348027d31e49c535be"></a><!-- doxytag: member="sinfo::common" ref="aa9d846b49c394348027d31e49c535be" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structcinfo.html">cinfo</a> <a class="el" href="structsinfo.html#aa9d846b49c394348027d31e49c535be">sinfo::common</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00064">64</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="e15c5adc74f2f712a8becebff37a06d4"></a><!-- doxytag: member="sinfo::db" ref="e15c5adc74f2f712a8becebff37a06d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">db</a>* <a class="el" href="structsinfo.html#e15c5adc74f2f712a8becebff37a06d4">sinfo::db</a><code> [read]</code> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00065">65</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="453d67e0467608c10700c7217cfe19fd"></a><!-- doxytag: member="sinfo::parser_match" ref="453d67e0467608c10700c7217cfe19fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void** <a class="el" href="structsinfo.html#453d67e0467608c10700c7217cfe19fd">sinfo::parser_match</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00066">66</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<a class="anchor" name="4dc79e3c97d069939b8ba2d65d85fa1f"></a><!-- doxytag: member="sinfo::commit_counter" ref="4dc79e3c97d069939b8ba2d65d85fa1f" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="structsinfo.html#4dc79e3c97d069939b8ba2d65d85fa1f">sinfo::commit_counter</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>Definition at line <a class="el" href="lightmediascanner__private_8h-source.html#l00067">67</a> of file <a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>.</p>
+
+<p>Referenced by <a class="el" href="lightmediascanner__check_8c-source.html#l00949">lms_check_single_process()</a>, and <a class="el" href="lightmediascanner__process_8c-source.html#l01044">lms_process_single_process()</a>.</p>
+
+</div>
+</div><p>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li>src/lib/<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:59 2008 for Light Media Scanner by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
+</body>
+</html>
--- /dev/null
+<area shape="rect" href="$structcinfo.html" title="{cinfo\n|+ lms\l|}" alt="" coords="89,885,148,968">
+<area shape="rect" href="$structlms.html" title="{lms\n|+ parsers\l+ n_parsers\l+ cs_conv\l+ db_path\l+ slave_timeout\l+ cb\l+ data\l+ free_data\l+ progress\l+ commit_interval\l+ is_processing\l+ stop_processing\l|}" alt="" coords="47,482,191,757">
+<area shape="rect" href="$structparser.html" title="{parser\n|+ plugin\l+ dl_handle\l+ so_path\l|}" alt="" coords="171,280,267,397">
+<area shape="rect" href="$structlms__plugin.html" title="{lms_plugin\n|+ name\l+ match\l+ parse\l+ close\l+ setup\l+ start\l+ finish\l|}" alt="" coords="175,6,263,193">
--- /dev/null
+6709f32326a2d1ee2fa7b29b05733490
\ No newline at end of file
padding-bottom : 6px;
}
-DIV.nav
+DIV.navpath
{
background : none;
border : none;
Provides an optimized way to recursively scan directories,
handling the parser in a child process, avoiding breaks of the
main process when parsers break (quite common with such bad libs
- and tags).
+ and tags). One can opt to use the single process version, but be
+ aware that if something bad happens during parsing, your
+ application will suffer.
</p>
<p>
Parsers are plugins in the form of shared objects, so it's easy
Library:
<ul>
<li><a
- href="https://garage.maemo.org/frs/shownotes.php?release_id=1252">Last tarball</a></li>
+ href="https://garage.maemo.org/frs/shownotes.php?release_id=2088">Last tarball (0.2)</a></li>
<li><code>git clone git://git.profusion.mobi/lightmediascanner.git</code></li>
</ul>
</li>
<li>
Python bindings:
<ul>
- <li><a href="https://garage.maemo.org/frs/shownotes.php?release_id=1253">Last tarball</a></li>
+ <li><a href="https://garage.maemo.org/frs/download.php/4626/lightmediascanner-0.2.0.0.tar.bz2">Last tarball (0.2)</a></li>
<li><code>git clone git://git.profusion.mobi/python-lightmediascanner.git</code></li>
</ul>
</li>
<li>
Ruby bindings:
<ul>
- <li><a href="https://garage.maemo.org/frs/shownotes.php?release_id=1326">Last tarball</a></li>
+ <li><a href="https://garage.maemo.org/frs/download.php/4627/python-lightmediascanner-0.2.0.tar.gz">Last tarball (0.1)</a></li>
<li><code>svn co <a
href="https://garage.maemo.org/svn/lms/ruby-lightmediascanner">https://garage.maemo.org/svn/lms/ruby-lightmediascanner</a></code></li>
</ul>
--- /dev/null
+lightmediascanner.c_lightmediascanner lightmediascanner.c_lightmediascanner-module.html
+lightmediascanner.c_lightmediascanner.LightMediaScanner lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html
+lightmediascanner.c_lightmediascanner.LightMediaScanner.process lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_slave_timeout lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__str__ lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.commit_interval lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parsers lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers
+lightmediascanner.c_lightmediascanner.LightMediaScanner.check lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__init__ lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.get_commit_interval lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__new__ lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.slave_timeout lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.process_single_process lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.stop_processing lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#stop_processing
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_progress_callback lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback
+lightmediascanner.c_lightmediascanner.LightMediaScanner.charset_add lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.get_slave_timeout lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout
+lightmediascanner.c_lightmediascanner.LightMediaScanner.is_processing lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing
+lightmediascanner.c_lightmediascanner.LightMediaScanner.db_path lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path
+lightmediascanner.c_lightmediascanner.LightMediaScanner.charset_del lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_add lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parsers_clear lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers_clear
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_find_and_add lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add
+lightmediascanner.c_lightmediascanner.LightMediaScanner.parser_del lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del
+lightmediascanner.c_lightmediascanner.LightMediaScanner.set_commit_interval lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval
+lightmediascanner.c_lightmediascanner.LightMediaScanner.check_single_process lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process
+lightmediascanner.c_lightmediascanner.LightMediaScanner.__repr__ lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__
+lightmediascanner.c_lightmediascanner.LightMediaScanner.delete lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#delete
+lightmediascanner.c_lightmediascanner.Parser lightmediascanner.c_lightmediascanner.Parser-class.html
+lightmediascanner.c_lightmediascanner.Parser.__new__ lightmediascanner.c_lightmediascanner.Parser-class.html#__new__
+lightmediascanner.c_lightmediascanner.Parser.__str__ lightmediascanner.c_lightmediascanner.Parser-class.html#__str__
+lightmediascanner.c_lightmediascanner.Parser.name lightmediascanner.c_lightmediascanner.Parser-class.html#name
+lightmediascanner.c_lightmediascanner.Parser.__repr__ lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__
+lightmediascanner.c_lightmediascanner.Parser.delete lightmediascanner.c_lightmediascanner.Parser-class.html#delete
+lightmediascanner.c_lightmediascanner.Parser.__init__ lightmediascanner.c_lightmediascanner.Parser-class.html#__init__
+lightmediascanner.c_lightmediascanner.Parser.scanner lightmediascanner.c_lightmediascanner.Parser-class.html#scanner
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Class Hierarchy</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Trees </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%"> </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="class-tree.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+ <li> <strong class="uidlink">object</strong>:
+ <em class="summary">The most base type</em>
+ <ul>
+ <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">lightmediascanner.c_lightmediascanner.LightMediaScanner</a></strong>
+ </li>
+ <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html">lightmediascanner.c_lightmediascanner.Parser</a></strong>
+ </li>
+ </ul>
+ </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Trees </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
-/* Body color */
-body { background: #ffffff; color: #000000; }
-
-/* Tables */
-table.summary, table.details, table.index
- { background: #e8f0f8; color: #000000; }
-tr.summary, tr.details, tr.index
- { background: #70b0f0; color: #000000;
- text-align: left; font-size: 120%; }
-tr.group { background: #c0e0f8; color: #000000;
- text-align: left; font-size: 120%;
- font-style: italic; }
-
-/* Documentation page titles */
-h2.module { margin-top: 0.2em; }
-h2.class { margin-top: 0.2em; }
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ * - Set the default foreground & background color with 'body'; and
+ * link colors with 'a:link' and 'a:visited'.
+ * - Use bold for decision list terms.
+ * - The heading styles defined here are used for headings *within*
+ * docstring descriptions. All headings used by epydoc itself use
+ * either class='epydoc' or class='toc' (CSS styles for both
+ * defined below).
+ */
+body { background: #ffffff; color: #000000; }
+p { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link { color: #0000ff; }
+a:visited { color: #204080; }
+dt { font-weight: bold; }
+h1 { font-size: +140%; font-style: italic;
+ font-weight: bold; }
+h2 { font-size: +125%; font-style: italic;
+ font-weight: bold; }
+h3 { font-size: +110%; font-style: italic;
+ font-weight: normal; }
+code { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link { font-family: monospace; }
-/* Headings */
-h1.heading { font-size: +140%; font-style: italic;
- font-weight: bold; }
-h2.heading { font-size: +125%; font-style: italic;
- font-weight: bold; }
-h3.heading { font-size: +110%; font-style: italic;
- font-weight: normal; }
-
-/* Base tree */
-pre.base-tree { font-size: 80%; margin: 0; }
-
-/* Details Sections */
-table.func-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.func-detail { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-table.var-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.var-details { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-/* Function signatures */
-.sig { background: transparent; color: #000000;
- font-weight: bold; }
-.sig-name { background: transparent; color: #006080; }
-.sig-arg, .sig-kwarg, .sig-vararg
- { background: transparent; color: #008060; }
-.sig-default { background: transparent; color: #602000; }
-.summary-sig { background: transparent; color: #000000; }
-.summary-sig-name { background: transparent; color: #204080; }
-.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
- { background: transparent; color: #008060; }
-
-/* Doctest blocks */
-.py-src { background: transparent; color: #000000; }
-.py-prompt { background: transparent; color: #005050;
- font-weight: bold;}
-.py-string { background: transparent; color: #006030; }
-.py-comment { background: transparent; color: #003060; }
-.py-keyword { background: transparent; color: #600000; }
-.py-output { background: transparent; color: #404040; }
-pre.doctestblock { background: #f4faff; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-table pre.doctestblock
- { background: #dce4ec; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-
-/* Variable values */
-pre.variable { background: #dce4ec; color: #000000;
- padding: .5em; margin: 0;
- border: 1px solid #708890; }
-.variable-linewrap { background: transparent; color: #604000; }
-.variable-ellipsis { background: transparent; color: #604000; }
-.variable-quote { background: transparent; color: #604000; }
-.re { background: transparent; color: #000000; }
-.re-char { background: transparent; color: #006030; }
-.re-op { background: transparent; color: #600000; }
-.re-group { background: transparent; color: #003060; }
-.re-ref { background: transparent; color: #404040; }
-
-/* Navigation bar */
-table.navbar { background: #a0c0ff; color: #0000ff;
- border: 2px groove #c0d0d0; }
-th.navbar { background: #a0c0ff; color: #0000ff; }
-th.navselect { background: #70b0ff; color: #000000; }
-.nomargin { margin: 0; }
-
-/* Links */
-a:link { background: transparent; color: #0000ff; }
-a:visited { background: transparent; color: #204080; }
-a.navbar:link { background: transparent; color: #0000ff;
- text-decoration: none; }
-a.navbar:visited { background: transparent; color: #204080;
- text-decoration: none; }
-
-/* Lists */
-ul { margin-top: 0; }
+/* Page Header & Footer
+ * - The standard page header consists of a navigation bar (with
+ * pointers to standard pages such as 'home' and 'trees'); a
+ * breadcrumbs list, which can be used to navigate to containing
+ * classes or modules; options links, to show/hide private
+ * variables and to show/hide frames; and a page title (using
+ * <h1>). The page title may be followed by a link to the
+ * corresponding source code (using 'span.codelink').
+ * - The footer consists of a navigation bar, a timestamp, and a
+ * pointer to epydoc's homepage.
+ */
+h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc { font-size: +130%; font-weight: bold; }
+h3.epydoc { font-size: +115%; font-weight: bold;
+ margin-top: 0.2em; }
+td h3.epydoc { font-size: +115%; font-weight: bold;
+ margin-bottom: 0; }
+table.navbar { background: #a0c0ff; color: #000000;
+ border: 2px groove #c0d0d0; }
+table.navbar table { color: #000000; }
+th.navbar-select { background: #70b0ff;
+ color: #000000; }
+table.navbar a { text-decoration: none; }
+table.navbar a:link { color: #0000ff; }
+table.navbar a:visited { color: #204080; }
+span.breadcrumbs { font-size: 85%; font-weight: bold; }
+span.options { font-size: 70%; }
+span.codelink { font-size: 85%; }
+td.footer { font-size: 85%; }
+
+/* Table Headers
+ * - Each summary table and details section begins with a 'header'
+ * row. This row contains a section title (marked by
+ * 'span.table-header') as well as a show/hide private link
+ * (marked by 'span.options', defined above).
+ * - Summary tables that contain user-defined groups mark those
+ * groups using 'group header' rows.
+ */
+td.table-header { background: #70b0ff; color: #000000;
+ border: 1px solid #608090; }
+td.table-header table { color: #000000; }
+td.table-header table a:link { color: #0000ff; }
+td.table-header table a:visited { color: #204080; }
+span.table-header { font-size: 120%; font-weight: bold; }
+th.group-header { background: #c0e0f8; color: #000000;
+ text-align: left; font-style: italic;
+ font-size: 115%;
+ border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ * - Each object is described by a single row of the table with
+ * two cells. The left cell gives the object's type, and is
+ * marked with 'code.summary-type'. The right cell gives the
+ * object's name and a summary description.
+ * - CSS styles for the table's header and group headers are
+ * defined above, under 'Table Headers'
+ */
+table.summary { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin-bottom: 0.5em; }
+td.summary { border: 1px solid #608090; }
+code.summary-type { font-size: 85%; }
+table.summary a:link { color: #0000ff; }
+table.summary a:visited { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ * - Each object is described in its own div.
+ * - A single-row summary table w/ table-header is used as
+ * a header for each details section (CSS style for table-header
+ * is defined above, under 'Table Headers').
+ */
+table.details { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin: .2em 0 0 0; }
+table.details table { color: #000000; }
+table.details a:link { color: #0000ff; }
+table.details a:visited { color: #204080; }
+
+/* Fields */
+dl.fields { margin-left: 2em; margin-top: 1em;
+ margin-bottom: 1em; }
+dl.fields dd ul { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; }
+div.fields { margin-left: 2em; }
+div.fields p { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ * - link-index is used for indices containing lists of links
+ * (namely, the identifier index & term index).
+ * - index-where is used in link indices for the text indicating
+ * the container/source for each link.
+ * - metadata-index is used for indices containing metadata
+ * extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090; }
+td.link-index { border-width: 0px; }
+table.link-index a:link { color: #0000ff; }
+table.link-index a:visited { color: #204080; }
+span.index-where { font-size: 70%; }
+table.metadata-index { border-collapse: collapse;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #608090;
+ margin: .2em 0 0 0; }
+td.metadata-index { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited { color: #204080; }
+
+/* Function signatures
+ * - sig* is used for the signature in the details section.
+ * - .summary-sig* is used for the signature in the summary
+ * table, and when listing property accessor functions.
+ * */
+.sig-name { color: #006080; }
+.sig-arg { color: #008060; }
+.sig-default { color: #602000; }
+.summary-sig { font-family: monospace; }
+.summary-sig-name { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+ { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+ { color: #006080; font-weight: bold; }
+.summary-sig-arg { color: #006040; }
+.summary-sig-default { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+ font-family: monospace; }
+table.summary
+ a.summary-name:link { color: #006080; font-weight: bold;
+ font-family: monospace; }
+table.summary
+ a.summary-name:visited { color: #006080; font-weight: bold;
+ font-family: monospace; }
+
+/* Variable values
+ * - In the 'variable details' sections, each varaible's value is
+ * listed in a 'pre.variable' box. The width of this box is
+ * restricted to 80 chars; if the value's repr is longer than
+ * this it will be wrapped, using a backslash marked with
+ * class 'variable-linewrap'. If the value's repr is longer
+ * than 3 lines, the rest will be ellided; and an ellipsis
+ * marker ('...' marked with 'variable-ellipsis') will be used.
+ * - If the value is a string, its quote marks will be marked
+ * with 'variable-quote'.
+ * - If the variable is a regexp, it is syntax-highlighted using
+ * the re* CSS classes.
+ */
+pre.variable { padding: .5em; margin: 0;
+ background: #dce4ec; color: #000000;
+ border: 1px solid #708890; }
+.variable-linewrap { color: #604000; font-weight: bold; }
+.variable-ellipsis { color: #604000; font-weight: bold; }
+.variable-quote { color: #604000; font-weight: bold; }
+.variable-group { color: #008000; font-weight: bold; }
+.variable-op { color: #604000; font-weight: bold; }
+.variable-string { color: #006030; }
+.variable-unknown { color: #a00000; font-weight: bold; }
+.re { color: #000000; }
+.re-char { color: #006030; }
+.re-op { color: #600000; }
+.re-group { color: #003060; }
+.re-ref { color: #404040; }
+
+/* Base tree
+ * - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ * - Consists of two frames: one for selecting modules; and
+ * the other listing the contents of the selected module.
+ * - h1.toc is used for each frame's heading
+ * - h2.toc is used for subheadings within each frame.
+ */
+h1.toc { text-align: center; font-size: 105%;
+ margin: 0; font-weight: bold;
+ padding: 0; }
+h2.toc { font-size: 100%; font-weight: bold;
+ margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ * - doctest examples are displayed in a 'pre.py-doctest' block.
+ * If the example is in a details table entry, then it will use
+ * the colors specified by the 'table pre.py-doctest' line.
+ * - Source code listings are displayed in a 'pre.py-src' block.
+ * Each line is marked with 'span.py-line' (used to draw a line
+ * down the left margin, separating the code from the line
+ * numbers). Line numbers are displayed with 'span.py-lineno'.
+ * The expand/collapse block toggle button is displayed with
+ * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ * modify the font size of the text.)
+ * - If a source code page is opened with an anchor, then the
+ * corresponding code block will be highlighted. The code
+ * block's header is highlighted with 'py-highlight-hdr'; and
+ * the code block's body is highlighted with 'py-highlight'.
+ * - The remaining py-* classes are used to perform syntax
+ * highlighting (py-string for string literals, py-name for names,
+ * etc.)
+ */
+pre.py-doctest { padding: .5em; margin: 1em;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #708890; }
+table pre.py-doctest { background: #dce4ec;
+ color: #000000; }
+pre.py-src { border: 2px solid #000000;
+ background: #f0f0f0; color: #000000; }
+.py-line { border-left: 2px solid #000000;
+ margin-left: .2em; padding-left: .4em; }
+.py-lineno { font-style: italic; font-size: 90%;
+ padding-left: .5em; }
+a.py-toggle { text-decoration: none; }
+div.py-highlight-hdr { border-top: 2px solid #000000;
+ border-bottom: 2px solid #000000;
+ background: #d8e8e8; }
+div.py-highlight { border-bottom: 2px solid #000000;
+ background: #d0e0e0; }
+.py-prompt { color: #005050; font-weight: bold;}
+.py-more { color: #005050; font-weight: bold;}
+.py-string { color: #006030; }
+.py-comment { color: #003060; }
+.py-keyword { color: #600000; }
+.py-output { color: #404040; }
+.py-name { color: #000050; }
+.py-name:link { color: #000050 !important; }
+.py-name:visited { color: #000050 !important; }
+.py-number { color: #005000; }
+.py-defname { color: #000060; font-weight: bold; }
+.py-def-name { color: #000060; font-weight: bold; }
+.py-base-class { color: #000060; }
+.py-param { color: #000060; }
+.py-docstring { color: #006030; }
+.py-decorator { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ * - These CSS styles are used for graphs & diagrams generated using
+ * Graphviz dot. 'img.graph-without-title' is used for bare
+ * diagrams (to remove the border created by making the image
+ * clickable).
+ */
+img.graph-without-title { border: none; }
+img.graph-with-title { border: 1px solid #000000; }
+span.graph-title { font-weight: bold; }
+span.graph-caption { }
+
+/* General-purpose classes
+ * - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ * is not indented, but whose subsequent lines are.
+ * - The 'nomargin-top' class is used to remove the top margin (e.g.
+ * from lists). The 'nomargin' class is used to remove both the
+ * top and bottom margin (but not the left or right margin --
+ * for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em;
+ margin: 0; }
+.nomargin-top { margin-top: 0; }
+.nomargin { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block { padding: 0; margin: .5em 0 .5em 0;
+ background: #e8f0f8; color: #000000;
+ border: 1px solid #000000; }
+div.log-error { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #ffb0b0; color: #000000;
+ border: 1px solid #000000; }
+div.log-warning { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #ffffb0; color: #000000;
+ border: 1px solid #000000; }
+div.log-info { padding: .1em .3em .1em .3em; margin: 4px;
+ background: #b0ffb0; color: #000000;
+ border: 1px solid #000000; }
+h2.log-hdr { background: #70b0ff; color: #000000;
+ margin: 0; padding: 0em 0.5em 0em 0.5em;
+ border-bottom: 1px solid #000000; font-size: 110%; }
+p.log { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed { color: #000000; font-weight: bold; }
+tr.opt-default { color: #606060; }
+pre.log { margin: 0; padding: 0; padding-left: 1em; }
--- /dev/null
+function toggle_private() {
+ // Search for any private/public links on this page. Store
+ // their old text in "cmd," so we will know what action to
+ // take; and change their text to the opposite action.
+ var cmd = "?";
+ var elts = document.getElementsByTagName("a");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "privatelink") {
+ cmd = elts[i].innerHTML;
+ elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+ "hide private":"show private");
+ }
+ }
+ // Update all DIVs containing private objects.
+ var elts = document.getElementsByTagName("div");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+ }
+ else if (elts[i].className == "public") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+ }
+ }
+ // Update all table rows containing private objects. Note, we
+ // use "" instead of "block" becaue IE & firefox disagree on what
+ // this should be (block vs table-row), and "" just gives the
+ // default for both browsers.
+ var elts = document.getElementsByTagName("tr");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+ }
+ }
+ // Update all list items containing private objects.
+ var elts = document.getElementsByTagName("li");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+ "none":"");
+ }
+ }
+ // Update all list items containing private objects.
+ var elts = document.getElementsByTagName("ul");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "private") {
+ elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+ }
+ }
+ // Set a cookie to remember the current option.
+ document.cookie = "EpydocPrivate="+cmd;
+ }
+function show_private() {
+ var elts = document.getElementsByTagName("a");
+ for(var i=0; i<elts.length; i++) {
+ if (elts[i].className == "privatelink") {
+ cmd = elts[i].innerHTML;
+ if (cmd && cmd.substr(0,4)=="show")
+ toggle_private();
+ }
+ }
+ }
+function getCookie(name) {
+ var dc = document.cookie;
+ var prefix = name + "=";
+ var begin = dc.indexOf("; " + prefix);
+ if (begin == -1) {
+ begin = dc.indexOf(prefix);
+ if (begin != 0) return null;
+ } else
+ { begin += 2; }
+ var end = document.cookie.indexOf(";", begin);
+ if (end == -1)
+ { end = dc.length; }
+ return unescape(dc.substring(begin + prefix.length, end));
+ }
+function setFrame(url1, url2) {
+ parent.frames[1].location.href = url1;
+ parent.frames[2].location.href = url2;
+ }
+function checkCookie() {
+ var cmd=getCookie("EpydocPrivate");
+ if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+ toggle_private();
+ }
+function toggleCallGraph(id) {
+ var elt = document.getElementById(id);
+ if (elt.style.display == "none")
+ elt.style.display = "block";
+ else
+ elt.style.display = "none";
+ }
+function expand(id) {
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.style.display = "block";
+ var elt = document.getElementById(id+"-expanded-linenums");
+ if (elt) elt.style.display = "block";
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+ var elt = document.getElementById(id+"-collapsed-linenums");
+ if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+ var elt = document.getElementById(id+"-toggle");
+ if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.style.display = "none";
+ var elt = document.getElementById(id+"-expanded-linenums");
+ if (elt) elt.style.display = "none";
+ var elt = document.getElementById(id+"-collapsed-linenums");
+ if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+ var elt = document.getElementById(id+"-toggle");
+ if (elt) { elt.innerHTML = "+"; }
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) {
+ elt.style.display = "block";
+
+ var indent = elt.getAttribute("indent");
+ var pad = elt.getAttribute("pad");
+ var s = "<tt class='py-lineno'>";
+ for (var i=0; i<pad.length; i++) { s += " " }
+ s += "</tt>";
+ s += " <tt class='py-line'>";
+ for (var i=0; i<indent.length; i++) { s += " " }
+ s += "<a href='#' onclick='expand(\"" + id;
+ s += "\");return false'>...</a></tt><br />";
+ elt.innerHTML = s;
+ }
+}
+
+function toggle(id) {
+ elt = document.getElementById(id+"-toggle");
+ if (elt.innerHTML == "-")
+ collapse(id);
+ else
+ expand(id);
+ return false;
+}
+
+function highlight(id) {
+ var elt = document.getElementById(id+"-def");
+ if (elt) elt.className = "py-highlight-hdr";
+ var elt = document.getElementById(id+"-expanded");
+ if (elt) elt.className = "py-highlight";
+ var elt = document.getElementById(id+"-collapsed");
+ if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+ var n = 1;
+ var pos = s.indexOf("\n");
+ while ( pos > 0) {
+ n += 1;
+ pos = s.indexOf("\n", pos+1);
+ }
+ return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+ var elts = document.getElementsByTagName("div");
+ for (var i=0; i<elts.length; i++) {
+ var elt = elts[i];
+ var split = elt.id.indexOf("-");
+ if (split > 0)
+ if (elt.id.substring(split, elt.id.length) == "-expanded")
+ if (num_lines(elt.innerHTML) > min_lines)
+ collapse(elt.id.substring(0, split));
+ }
+}
+
+function expandto(href) {
+ var start = href.indexOf("#")+1;
+ if (start != 0 && start != href.length) {
+ if (href.substring(start, href.length) != "-") {
+ collapse_all(4);
+ pos = href.indexOf(".", start);
+ while (pos != -1) {
+ var id = href.substring(start, pos);
+ expand(id);
+ pos = href.indexOf(".", pos+1);
+ }
+ var id = href.substring(start, href.length);
+ expand(id);
+ highlight(id);
+ }
+ }
+}
+
+function kill_doclink(id) {
+ var parent = document.getElementById(id);
+ parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+ if (!ev) var ev = window.event;
+ if (!this.contains(ev.toElement)) {
+ var parent = document.getElementById(this.parentID);
+ parent.removeChild(parent.childNodes.item(0));
+ }
+}
+
+function doclink(id, name, targets_id) {
+ var elt = document.getElementById(id);
+
+ // If we already opened the box, then destroy it.
+ // (This case should never occur, but leave it in just in case.)
+ if (elt.childNodes.length > 1) {
+ elt.removeChild(elt.childNodes.item(0));
+ }
+ else {
+ // The outer box: relative + inline positioning.
+ var box1 = document.createElement("div");
+ box1.style.position = "relative";
+ box1.style.display = "inline";
+ box1.style.top = 0;
+ box1.style.left = 0;
+
+ // A shadow for fun
+ var shadow = document.createElement("div");
+ shadow.style.position = "absolute";
+ shadow.style.left = "-1.3em";
+ shadow.style.top = "-1.3em";
+ shadow.style.background = "#404040";
+
+ // The inner box: absolute positioning.
+ var box2 = document.createElement("div");
+ box2.style.position = "relative";
+ box2.style.border = "1px solid #a0a0a0";
+ box2.style.left = "-.2em";
+ box2.style.top = "-.2em";
+ box2.style.background = "white";
+ box2.style.padding = ".3em .4em .3em .4em";
+ box2.style.fontStyle = "normal";
+ box2.onmouseout=auto_kill_doclink;
+ box2.parentID = id;
+
+ // Get the targets
+ var targets_elt = document.getElementById(targets_id);
+ var targets = targets_elt.getAttribute("targets");
+ var links = "";
+ target_list = targets.split(",");
+ for (var i=0; i<target_list.length; i++) {
+ var target = target_list[i].split("=");
+ links += "<li><a href='" + target[1] +
+ "' style='text-decoration:none'>" +
+ target[0] + "</a></li>";
+ }
+
+ // Put it all together.
+ elt.insertBefore(box1, elt.childNodes.item(0));
+ //box1.appendChild(box2);
+ box1.appendChild(shadow);
+ shadow.appendChild(box2);
+ box2.innerHTML =
+ "Which <b>"+name+"</b> do you want to see documentation for?" +
+ "<ul style='margin-bottom: 0;'>" +
+ links +
+ "<li><a href='#' style='text-decoration:none' " +
+ "onclick='kill_doclink(\""+id+"\");return false;'>"+
+ "<i>None of the above</i></a></li></ul>";
+ }
+ return false;
+}
+
+function get_anchor() {
+ var href = location.href;
+ var start = href.indexOf("#")+1;
+ if ((start != 0) && (start != href.length))
+ return href.substring(start, href.length);
+ }
+function redirect_url(dottedName) {
+ // Scan through each element of the "pages" list, and check
+ // if "name" matches with any of them.
+ for (var i=0; i<pages.length; i++) {
+
+ // Each page has the form "<pagename>-m" or "<pagename>-c";
+ // extract the <pagename> portion & compare it to dottedName.
+ var pagename = pages[i].substring(0, pages[i].length-2);
+ if (pagename == dottedName.substring(0,pagename.length)) {
+
+ // We've found a page that matches `dottedName`;
+ // construct its URL, using leftover `dottedName`
+ // content to form an anchor.
+ var pagetype = pages[i].charAt(pages[i].length-1);
+ var url = pagename + ((pagetype=="m")?"-module.html":
+ "-class.html");
+ if (dottedName.length > pagename.length)
+ url += "#" + dottedName.substring(pagename.length+1,
+ dottedName.length);
+ return url;
+ }
+ }
+ }
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title> Python-LightMediaScanner API </title>
+</head>
+<frameset cols="20%,80%">
+ <frameset rows="30%,70%">
+ <frame src="toc.html" name="moduleListFrame"
+ id="moduleListFrame" />
+ <frame src="toc-everything.html" name="moduleFrame"
+ id="moduleFrame" />
+ </frameset>
+ <frame src="lightmediascanner.c_lightmediascanner-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Help</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Help </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%"> </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="help.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for Python-LightMediaScanner API. Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class. The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page. </p>
+
+<h2> Object Documentation </h2>
+
+ <p>Each <strong>Package Documentation</strong> page contains: </p>
+ <ul>
+ <li> A description of the package. </li>
+ <li> A list of the modules and sub-packages contained by the
+ package. </li>
+ <li> A summary of the classes defined by the package. </li>
+ <li> A summary of the functions defined by the package. </li>
+ <li> A summary of the variables defined by the package. </li>
+ <li> A detailed description of each function defined by the
+ package. </li>
+ <li> A detailed description of each variable defined by the
+ package. </li>
+ </ul>
+
+ <p>Each <strong>Module Documentation</strong> page contains:</p>
+ <ul>
+ <li> A description of the module. </li>
+ <li> A summary of the classes defined by the module. </li>
+ <li> A summary of the functions defined by the module. </li>
+ <li> A summary of the variables defined by the module. </li>
+ <li> A detailed description of each function defined by the
+ module. </li>
+ <li> A detailed description of each variable defined by the
+ module. </li>
+ </ul>
+
+ <p>Each <strong>Class Documentation</strong> page contains: </p>
+ <ul>
+ <li> A class inheritance diagram. </li>
+ <li> A list of known subclasses. </li>
+ <li> A description of the class. </li>
+ <li> A summary of the methods defined by the class. </li>
+ <li> A summary of the instance variables defined by the class. </li>
+ <li> A summary of the class (static) variables defined by the
+ class. </li>
+ <li> A detailed description of each method defined by the
+ class. </li>
+ <li> A detailed description of each instance variable defined by the
+ class. </li>
+ <li> A detailed description of each class (static) variable defined
+ by the class. </li>
+ </ul>
+
+<h2> Project Documentation </h2>
+
+ <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+ <ul>
+ <li> The <em>module hierarchy</em> lists every package and module, with
+ modules grouped into packages. At the top level, and within each
+ package, modules and sub-packages are listed alphabetically. </li>
+ <li> The <em>class hierarchy</em> lists every class, grouped by base
+ class. If a class has more than one base class, then it will be
+ listed under each base class. At the top level, and under each base
+ class, classes are listed alphabetically. </li>
+ </ul>
+
+ <p> The <strong>Index</strong> page contains indices of terms and
+ identifiers: </p>
+ <ul>
+ <li> The <em>term index</em> lists every term indexed by any object's
+ documentation. For each term, the index provides links to each
+ place where the term is indexed. </li>
+ <li> The <em>identifier index</em> lists the (short) name of every package,
+ module, class, method, function, variable, and parameter. For each
+ identifier, the index provides a short description, and a link to
+ its documentation. </li>
+ </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window. The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+ <tr style="height: 30%">
+ <td align="center" style="font-size: small">
+ Project<br />Contents<hr />...</td>
+ <td align="center" style="font-size: small" rowspan="2" width="70%">
+ API<br />Documentation<br />Frame<br /><br /><br />
+ </td>
+ </tr>
+ <tr>
+ <td align="center" style="font-size: small">
+ Module<br />Contents<hr /> <br />...<br />
+ </td>
+ </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project. Clicking on an entry
+will display its contents in the module contents frame. Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package. Clicking on an entry will display its
+documentation in the API documentation frame. Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages. The following table describes the labels
+on the navigation bar. Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+ <th>Label</th>
+ <th>Highlighted when...</th>
+ <th>Links to...</th>
+</tr>
+ <tr><td valign="top"><strong>[Parent]</strong></td>
+ <td valign="top"><em>(never highlighted)</em></td>
+ <td valign="top"> the parent of the current package </td></tr>
+ <tr><td valign="top"><strong>[Package]</strong></td>
+ <td valign="top">viewing a package</td>
+ <td valign="top">the package containing the current object
+ </td></tr>
+ <tr><td valign="top"><strong>[Module]</strong></td>
+ <td valign="top">viewing a module</td>
+ <td valign="top">the module containing the current object
+ </td></tr>
+ <tr><td valign="top"><strong>[Class]</strong></td>
+ <td valign="top">viewing a class </td>
+ <td valign="top">the class containing the current object</td></tr>
+ <tr><td valign="top"><strong>[Trees]</strong></td>
+ <td valign="top">viewing the trees page</td>
+ <td valign="top"> the trees page </td></tr>
+ <tr><td valign="top"><strong>[Index]</strong></td>
+ <td valign="top">viewing the index page</td>
+ <td valign="top"> the index page </td></tr>
+ <tr><td valign="top"><strong>[Help]</strong></td>
+ <td valign="top">viewing the help page</td>
+ <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed. Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore. For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not. However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Help </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Identifier Index</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Indices </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%"> </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="identifier-index.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ A
+ B
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ E
+ F
+ <a href="#G">G</a>
+ H
+ <a href="#I">I</a>
+ J
+ K
+ <a href="#L">L</a>
+ M
+ <a href="#N">N</a>
+ O
+ <a href="#P">P</a>
+ Q
+ R
+ <a href="#S">S</a>
+ T
+ U
+ V
+ W
+ X
+ Y
+ Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a><br />
+<span class="index-where">(in lightmediascanner)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del">charset_del()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process">check_single_process()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add">charset_add()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check">check()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval">commit_interval</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path">db_path</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#delete">delete()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete">delete()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval">get_commit_interval()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout">get_slave_timeout()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing">is_processing()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name">name</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add">parser_find_and_add()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process">process()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add">parser_add()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers">parsers</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process">process_single_process()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del">parser_del()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers_clear">parsers_clear()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner">scanner</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback">set_progress_callback()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout">slave_timeout</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval">set_commit_interval()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout">set_slave_timeout()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#stop_processing">stop_processing()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__">__new__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__">__new__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a>)</span></td>
+<td width="33%" class="link-index"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Indices </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title> API Documentation </title>
+ <title> Python-LightMediaScanner API </title>
</head>
<frameset cols="20%,80%">
<frameset rows="30%,70%">
- <frame src="public/toc.html" name="moduleListFrame">
- <frame src="public/toc-everything.html" name="moduleFrame">
+ <frame src="toc.html" name="moduleListFrame"
+ id="moduleListFrame" />
+ <frame src="toc-everything.html" name="moduleFrame"
+ id="moduleFrame" />
</frameset>
- <frame src="public/lightmediascanner-module.html" name="mainFrame">
+ <frame src="lightmediascanner.c_lightmediascanner-module.html" name="mainFrame" id="mainFrame" />
</frameset>
</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner-module.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package lightmediascanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner-pysrc.html">source code</a></span></p>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_UP_TO_DATE"></a><span class="summary-name">LMS_PROGRESS_STATUS_UP_TO_DATE</span> = <code title="0">0</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_PROCESSED"></a><span class="summary-name">LMS_PROGRESS_STATUS_PROCESSED</span> = <code title="1">1</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_DELETED"></a><span class="summary-name">LMS_PROGRESS_STATUS_DELETED</span> = <code title="2">2</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_KILLED"></a><span class="summary-name">LMS_PROGRESS_STATUS_KILLED</span> = <code title="3">3</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_ERROR_PARSE"></a><span class="summary-name">LMS_PROGRESS_STATUS_ERROR_PARSE</span> = <code title="4">4</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="LMS_PROGRESS_STATUS_ERROR_COMM"></a><span class="summary-name">LMS_PROGRESS_STATUS_ERROR_COMM</span> = <code title="5">5</code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:01 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="lightmediascanner-module.html">Package lightmediascanner</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2007 by INdT</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This program is free software; you can redistribute it and/or</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># modify it under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># as published by the Free Software Foundation; either version 2</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># of the License, or (at your option) any later version.</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This program is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public License</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with this program; if not, write to the Free Software</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># @author Gustavo Sverzut Barbieri <gustavo.barbieri@openbossa.org></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">c_lightmediascanner</tt> <tt class="py-keyword">import</tt> <tt class="py-name">LightMediaScanner</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE=lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE"><a title="lightmediascanner.LMS_PROGRESS_STATUS_UP_TO_DATE" class="py-name" href="#" onclick="return doclink('link-0', 'LMS_PROGRESS_STATUS_UP_TO_DATE', 'link-0');">LMS_PROGRESS_STATUS_UP_TO_DATE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_PROCESSED" class="py-name" href="#" onclick="return doclink('link-1', 'LMS_PROGRESS_STATUS_PROCESSED', 'link-1');">LMS_PROGRESS_STATUS_PROCESSED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_DELETED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_DELETED" class="py-name" href="#" onclick="return doclink('link-2', 'LMS_PROGRESS_STATUS_DELETED', 'link-2');">LMS_PROGRESS_STATUS_DELETED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_KILLED=lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED"><a title="lightmediascanner.LMS_PROGRESS_STATUS_KILLED" class="py-name" href="#" onclick="return doclink('link-3', 'LMS_PROGRESS_STATUS_KILLED', 'link-3');">LMS_PROGRESS_STATUS_KILLED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE=lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE"><a title="lightmediascanner.LMS_PROGRESS_STATUS_ERROR_PARSE" class="py-name" href="#" onclick="return doclink('link-4', 'LMS_PROGRESS_STATUS_ERROR_PARSE', 'link-4');">LMS_PROGRESS_STATUS_ERROR_PARSE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM=lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM"><a title="lightmediascanner.LMS_PROGRESS_STATUS_ERROR_COMM" class="py-name" href="#" onclick="return doclink('link-5', 'LMS_PROGRESS_STATUS_ERROR_COMM', 'link-5');">LMS_PROGRESS_STATUS_ERROR_COMM</a></tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:01 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner.c_lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner ::
+ Module c_lightmediascanner
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner.c_lightmediascanner-module.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module c_lightmediascanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html">source code</a></span></p>
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html" class="summary-name">LightMediaScanner</a>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a href="lightmediascanner.c_lightmediascanner.Parser-class.html" class="summary-name">Parser</a>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner.c_lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner ::
+ Module c_lightmediascanner
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner.c_lightmediascanner-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="lightmediascanner.c_lightmediascanner-module.html">Module lightmediascanner.c_lightmediascanner</a></h1>
+<pre class="py-src">
+<a name="__bootstrap__"></a><div id="__bootstrap__-def"><a name="L1"></a><tt class="py-lineno">1</tt> <a class="py-toggle" href="#" id="__bootstrap__-toggle" onclick="return toggle('__bootstrap__');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lightmediascanner.c_lightmediascanner-module.html#__bootstrap__">__bootstrap__</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="__bootstrap__-collapsed" style="display:none;" pad="+" indent="++++"></div><div id="__bootstrap__-expanded"><a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt class="py-name">__bootstrap__</tt><tt class="py-op">,</tt> <tt class="py-name">__loader__</tt><tt class="py-op">,</tt> <tt class="py-name">__file__</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">3</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">,</tt> <tt class="py-name">imp</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">4</tt> <tt class="py-line"> <tt class="py-name">__file__</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_filename</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt><tt class="py-string">'c_lightmediascanner.so'</tt><tt class="py-op">)</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">5</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">__bootstrap__</tt><tt class="py-op">,</tt> <tt class="py-name">__loader__</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">6</tt> <tt class="py-line"> <tt class="py-name">imp</tt><tt class="py-op">.</tt><tt class="py-name">load_dynamic</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt><tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L7"></a><tt class="py-lineno">7</tt> <tt class="py-line"><tt class="py-name">__bootstrap__</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">8</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Home </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner.c_lightmediascanner.LightMediaScanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner ::
+ <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
+ Class LightMediaScanner
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LightMediaScanner</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner">source code</a></span></p>
+<pre class="base-tree">
+object --+
+ |
+ <strong class="uidshort">LightMediaScanner</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__init__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">a new object with type S, a subtype of T</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+ <span class="summary-sig-arg">S</span>,
+ <span class="summary-sig-arg">...</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__new__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ repr(x)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__repr__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ str(x)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__str__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add" class="summary-sig-name">charset_add</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Add charset to list of supported input charsets/encoding.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_add">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="charset_del"></a><span class="summary-sig-name">charset_del</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Del charset from list of supported input charsets/encoding.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_del">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check" class="summary-sig-name">check</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Check (and update) files under directory.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check_single_process" class="summary-sig-name">check_single_process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Check (and update) files under directory *without fork()-ing into
+ child process*.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check_single_process">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="delete"></a><span class="summary-sig-name">delete</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Delete all parsers and force wrapped object deletion</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.delete">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">int</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="get_commit_interval"></a><span class="summary-sig-name">get_commit_interval</span>(<span class="summary-sig-arg">...</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.get_commit_interval">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">int</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="get_slave_timeout"></a><span class="summary-sig-name">get_slave_timeout</span>(<span class="summary-sig-arg">...</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.get_slave_timeout">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">bool</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="is_processing"></a><span class="summary-sig-name">is_processing</span>(<span class="summary-sig-arg">...</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.is_processing">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+ class="link">Parser</a></span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="parser_add"></a><span class="summary-sig-name">parser_add</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Add a new plugin/parser based on it's whole path to shared object.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_add">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="parser_del"></a><span class="summary-sig-name">parser_del</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Delete a plugin/parser.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_del">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+ class="link">Parser</a></span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="parser_find_and_add"></a><span class="summary-sig-name">parser_find_and_add</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Add a new plugin/parser based on it's name.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parser_find_and_add">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="parsers_clear"></a><span class="summary-sig-name">parsers_clear</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Delete all plugins/parsers</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.parsers_clear">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process" class="summary-sig-name">process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Process directory recursively.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process_single_process" class="summary-sig-name">process_single_process</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Process directory recursively *without fork()-ing into child
+ process*.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process_single_process">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval" class="summary-sig-name">set_commit_interval</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Set the number of transactions between commits.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_commit_interval">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_progress_callback" class="summary-sig-name">set_progress_callback</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Set new progress callback.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_progress_callback">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout" class="summary-sig-name">set_slave_timeout</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ Set maximum time a parser may use.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_slave_timeout">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="stop_processing"></a><span class="summary-sig-name">stop_processing</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Stop process/check</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.stop_processing">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__setattr__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="commit_interval"></a><span class="summary-name">commit_interval</span>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="db_path"></a><span class="summary-name">db_path</span>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="parsers"></a><span class="summary-name">parsers</span>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="slave_timeout"></a><span class="summary-name">slave_timeout</span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__init__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>x.__init__(...) initializes x; see x.__class__.__doc__ for
+ signature</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+ <span class="sig-arg">S</span>,
+ <span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__new__">source code</a></span>
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Returns: a new object with type S, a subtype of T</dt>
+ <dt>Overrides:
+ object.__new__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__repr__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>repr(x)</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__repr__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Informal representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.__str__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>str(x)</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__str__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="charset_add"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">charset_add</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.charset_add">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Add charset to list of supported input charsets/encoding.</p>
+ <p>If some string in analysed/parsed files are not UTF-8, then it will
+ try agains a list of charsets registered with this function.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Check (and update) files under directory.</p>
+ <p>This operates on all files in all sub directories of top_path using
+ the added parsers. If files are up to date, nothing is done, otherwise
+ they can be marked as deleted or updated if they still exists, but with
+ different size or modification time.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="check_single_process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">check_single_process</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.check_single_process">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Check (and update) files under directory *without fork()-ing into
+ child process*.</p>
+ <p>This operates on all files in all sub directories of top_path using
+ the added parsers. If files are up to date, nothing is done, otherwise
+ they can be marked as deleted or updated if they still exists, but with
+ different size or modification time.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Process directory recursively.</p>
+ <p>This operates on all files in all sub directories of top_path using
+ the added parsers.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="process_single_process"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">process_single_process</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.process_single_process">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Process directory recursively *without fork()-ing into child
+ process*.</p>
+ <p>This operates on all files in all sub directories of top_path using
+ the added parsers.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_commit_interval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_commit_interval</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_commit_interval">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Set the number of transactions between commits.</p>
+ <p>Sets how many transactions/files to handle in one commit, the more the
+ faster, but if one parser takes too long and it's killed due
+ slave_timeout being exceeded, then at most this number of transactions
+ will be lost.</p>
+ <p>Note that transaction here is not a single SQL statement, but it is
+ considered to be the processing of a file, which can be more than just
+ one.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_progress_callback"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_progress_callback</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_progress_callback">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Set new progress callback.
+
+If you want to unset a callback, just use None.
+
+Function signature is:
+
+ C{function(lms, path, status, *args, **kargs)}
+
+with status being one of LMS_PROGRESS_STATUS_*.
+
+@parm: B{cb} a callable object or None to unset previously set callback.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="set_slave_timeout"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">set_slave_timeout</span>(<span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#LightMediaScanner.set_slave_timeout">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>Set maximum time a parser may use.</p>
+ <p>This will be the timeout before killing the slave process running some
+ parser. If this happens, another slave process will be started to
+ continue from next file.</p>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner.c_lightmediascanner.Parser</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ Package lightmediascanner ::
+ <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
+ Class Parser
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Parser</h1><p class="nomargin-top"><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser">source code</a></span></p>
+<pre class="base-tree">
+object --+
+ |
+ <strong class="uidshort">Parser</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__init__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type">a new object with type S, a subtype of T</span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+ <span class="summary-sig-arg">S</span>,
+ <span class="summary-sig-arg">...</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__new__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ repr(x)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__repr__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+ str(x)</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__str__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="delete"></a><span class="summary-sig-name">delete</span>(<span class="summary-sig-arg">...</span>)</span><br />
+ Same as LightMediaScanner.parser_del(self).</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.delete">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__setattr__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="name"></a><span class="summary-name">name</span>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="scanner"></a><span class="summary-name">scanner</span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__init__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>x.__init__(...) initializes x; see x.__class__.__doc__ for
+ signature</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+ <span class="sig-arg">S</span>,
+ <span class="sig-arg">...</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__new__">source code</a></span>
+ </td>
+ </tr></table>
+
+
+ <dl class="fields">
+ <dt>Returns: a new object with type S, a subtype of T</dt>
+ <dt>Overrides:
+ object.__new__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__repr__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>repr(x)</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__repr__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">...</span>)</span>
+ <br /><em class="fname">(Informal representation operator)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="lightmediascanner.c_lightmediascanner-pysrc.html#Parser.__str__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <p>str(x)</p>
+ <dl class="fields">
+ <dt>Overrides:
+ object.__str__
+ <dd><em class="note">(inherited documentation)</em></dd>
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Module Hierarchy</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Trees </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%"> </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="module-tree.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+ <li> <strong class="uidlink"><a href="lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a></strong> </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="lightmediascanner.c_lightmediascanner-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th bgcolor="#70b0f0" class="navbar-select"
+ > Trees </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ >Python-LightMediaScanner API</th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Sun Oct 5 12:29:12 2008
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>__builtin__.object</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Module __builtin__ ::
- Class object
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/__builtin__.object-class.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.object-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type object</h2>
-
-<dl><dt><b>Known Subclasses:</b></dt>
-<dd>
- <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a>,
- <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a>,
- <a href="__builtin__.type-class.html"><code>type</code></a></dd></dl>
-
-<hr/>
-
-The most base type
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__repr__() <==> repr(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__str__() <==> str(x)</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
- <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__delattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__delattr__('name') <==> del x.name
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__getattribute__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__getattribute__('name') <==> x.name
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__hash__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Hashing function)</i>
- </h3>
- x.__hash__() <==> hash(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-hash(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__reduce__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- helper for pickle
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__reduce_ex__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- helper for pickle
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__repr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Representation operator)</i>
- </h3>
- x.__repr__() <==> repr(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-repr(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__setattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__setattr__('name', value) <==> x.name = value
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__str__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Informal representation operator)</i>
- </h3>
- x.__str__() <==> str(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-str(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>__builtin__.type</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Module __builtin__ ::
- Class type
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/__builtin__.type-class.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.type-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type type</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>type</b>
-</pre><br />
-
-<hr/>
-
-type(object) -> the object's type type(name, bases, dict) -> a
-new type
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__call__(...) <==> x(...)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>,
- <span class=summary-sig-arg>y</span>)</span></code>
-<br />
-x.__cmp__(y) <==> cmp(x,y)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__repr__() <==> repr(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code>
-<br />
-__subclasses__() -> list of immediate subclasses</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code>
-<br />
-return a type's method resolution order</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__str__() <==> str(x)</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
- <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(<type 'object'>,)"><code>(<type 'object'>,) </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="424">424 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="153067">153067 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(<type 'type'>, <type 'object'>)"><code>(<type 'type'>, <type 'object'>) </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184 </span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__call__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>,
- <span class="sig-vararg">...</span>)</span>
- <br /><i>(Call operator)</i>
- </h3>
- x.__call__(...) <==> x(...)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-x(...)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__cmp__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>,
- <span class=sig-arg>y</span>)</span>
- <br /><i>(Comparison operator)</i>
- </h3>
- x.__cmp__(y) <==> cmp(x,y)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-cmp(x,y)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__delattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__delattr__('name') <==> del x.name
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__getattribute__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__getattribute__('name') <==> x.name
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__hash__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Hashing function)</i>
- </h3>
- x.__hash__() <==> hash(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-hash(x)
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__repr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Representation operator)</i>
- </h3>
- x.__repr__() <==> repr(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-repr(x)
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__setattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__setattr__('name', value) <==> x.name = value
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__subclasses__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span>
- </h3>
- __subclasses__() -> list of immediate subclasses
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-list of immediate subclasses </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="mro"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">mro</span>()</span>
- </h3>
- return a type's method resolution order
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-list </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__bases__"></a>
-<h3>__bases__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>tuple</code>
-
- </dd>
-<span title="(<type 'object'>,)"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-(<type 'object'>,) </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__basicsize__"></a>
-<h3>__basicsize__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="424"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-424 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__dictoffset__"></a>
-<h3>__dictoffset__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="132"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-132 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__flags__"></a>
-<h3>__flags__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="153067"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-153067 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__itemsize__"></a>
-<h3>__itemsize__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="20"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-20 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__mro__"></a>
-<h3>__mro__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>tuple</code>
-
- </dd>
-<span title="(<type 'type'>, <type 'object'>)"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-(<type 'type'>, <type 'object'>) </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__name__"></a>
-<h3>__name__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>str</code>
-
- </dd>
-<span title="'type'"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__weakrefoffset__"></a>
-<h3>__weakrefoffset__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="184"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-184 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-
-/* Body color */
-body { background: #ffffff; color: #000000; }
-
-/* Tables */
-table.summary, table.details, table.index
- { background: #e8f0f8; color: #000000; }
-tr.summary, tr.details, tr.index
- { background: #70b0f0; color: #000000;
- text-align: left; font-size: 120%; }
-tr.group { background: #c0e0f8; color: #000000;
- text-align: left; font-size: 120%;
- font-style: italic; }
-
-/* Documentation page titles */
-h2.module { margin-top: 0.2em; }
-h2.class { margin-top: 0.2em; }
-
-/* Headings */
-h1.heading { font-size: +140%; font-style: italic;
- font-weight: bold; }
-h2.heading { font-size: +125%; font-style: italic;
- font-weight: bold; }
-h3.heading { font-size: +110%; font-style: italic;
- font-weight: normal; }
-
-/* Base tree */
-pre.base-tree { font-size: 80%; margin: 0; }
-
-/* Details Sections */
-table.func-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.func-detail { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-table.var-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.var-details { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-/* Function signatures */
-.sig { background: transparent; color: #000000;
- font-weight: bold; }
-.sig-name { background: transparent; color: #006080; }
-.sig-arg, .sig-kwarg, .sig-vararg
- { background: transparent; color: #008060; }
-.sig-default { background: transparent; color: #602000; }
-.summary-sig { background: transparent; color: #000000; }
-.summary-sig-name { background: transparent; color: #204080; }
-.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
- { background: transparent; color: #008060; }
-
-/* Doctest blocks */
-.py-src { background: transparent; color: #000000; }
-.py-prompt { background: transparent; color: #005050;
- font-weight: bold;}
-.py-string { background: transparent; color: #006030; }
-.py-comment { background: transparent; color: #003060; }
-.py-keyword { background: transparent; color: #600000; }
-.py-output { background: transparent; color: #404040; }
-pre.doctestblock { background: #f4faff; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-table pre.doctestblock
- { background: #dce4ec; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-
-/* Variable values */
-pre.variable { background: #dce4ec; color: #000000;
- padding: .5em; margin: 0;
- border: 1px solid #708890; }
-.variable-linewrap { background: transparent; color: #604000; }
-.variable-ellipsis { background: transparent; color: #604000; }
-.variable-quote { background: transparent; color: #604000; }
-.re { background: transparent; color: #000000; }
-.re-char { background: transparent; color: #006030; }
-.re-op { background: transparent; color: #600000; }
-.re-group { background: transparent; color: #003060; }
-.re-ref { background: transparent; color: #404040; }
-
-/* Navigation bar */
-table.navbar { background: #a0c0ff; color: #0000ff;
- border: 2px groove #c0d0d0; }
-th.navbar { background: #a0c0ff; color: #0000ff; }
-th.navselect { background: #70b0ff; color: #000000; }
-.nomargin { margin: 0; }
-
-/* Links */
-a:link { background: transparent; color: #0000ff; }
-a:visited { background: transparent; color: #204080; }
-a.navbar:link { background: transparent; color: #0000ff;
- text-decoration: none; }
-a.navbar:visited { background: transparent; color: #204080;
- text-decoration: none; }
-
-/* Lists */
-ul { margin-top: 0; }
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
- <title> API Documentation </title>
-</head>
-<frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="toc.html" name="moduleListFrame">
- <frame src="toc-everything.html" name="moduleFrame">
- </frameset>
- <frame src="lightmediascanner-module.html" name="mainFrame">
-</frameset>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Help</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Help </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/help.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="help.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<center><h2> API Documentation </h2></center>
-
-<p> This document contains the API (Application Programming Interface)
-documentation for this project. Documentation for the Python
-objects defined by the project is divided into separate pages for each
-package, module, and class. The API documentation also includes two
-pages containing information about the project as a whole: a trees
-page, and an index page. </p>
-
-<h2> Object Documentation </h2>
-
- <p>Each <b>Package Documentation</b> page contains:
- <ul>
- <li> A description of the package. </li>
- <li> A list of the modules and sub-packages contained by the
- package. </li>
- <li> A summary of the classes defined by the package. </li>
- <li> A summary of the functions defined by the package. </li>
- <li> A summary of the variables defined by the package. </li>
- <li> A detailed description of each function defined by the
- package. </li>
- <li> A detailed description of each variable defined by the
- package. </li>
- </ul></p>
-
- <p>Each <b>Module Documentation</b> page contains:
- <ul>
- <li> A description of the module. </li>
- <li> A summary of the classes defined by the module. </li>
- <li> A summary of the functions defined by the module. </li>
- <li> A summary of the variables defined by the module. </li>
- <li> A detailed description of each function defined by the
- module. </li>
- <li> A detailed description of each variable defined by the
- module. </li>
- </ul></p>
-
- <p>Each <b>Class Documentation</b> page contains:
- <ul>
- <li> A class inheritance diagram. </li>
- <li> A list of known subclasses. </li>
- <li> A description of the class. </li>
- <li> A summary of the methods defined by the class. </li>
- <li> A summary of the instance variables defined by the class. </li>
- <li> A summary of the class (static) variables defined by the
- class. </li>
- <li> A detailed description of each method defined by the
- class. </li>
- <li> A detailed description of each instance variable defined by the
- class. </li>
- <li> A detailed description of each class (static) variable defined
- by the class. </li>
- </ul></p>
-
-<h2> Project Documentation </h2>
-
- <p> The <b>Trees</b> page contains the module and class hierarchies:
- <ul>
- <li> The <i>module hierarchy</i> lists every package and module, with
- modules grouped into packages. At the top level, and within each
- package, modules and sub-packages are listed alphabetically. </li>
- <li> The <i>class hierarchy</i> lists every class, grouped by base
- class. If a class has more than one base class, then it will be
- listed under each base class. At the top level, and under each base
- class, classes are listed alphabetically. </li>
- </ul></p>
-
- <p> The <b>Index</b> page contains indices of terms and
- identifiers:
- <ul>
- <li> The <i>term index</i> lists every term indexed by any object's
- documentation. For each term, the index provides links to each
- place where the term is indexed. </li>
- <li> The <i>identifier index</i> lists the (short) name of every package,
- module, class, method, function, variable, and parameter. For each
- identifier, the index provides a short description, and a link to
- its documentation. </li>
- </ul></p>
-
-<h2> The Table of Contents </h2>
-
-<p> The table of contents occupies the two frames on the left side of
-the window. The upper-left frame displays the <i>project
-contents</i>, and the lower-left frame displays the <i>module
-contents</i>: </p>
-
-<center>
-<table class="summary" border="1" cellspacing="0" cellpadding="3">
- <tr heigh="30%">
- <td align="center">
- <font size="-1">Project<br>Contents<hr>...</font></td>
- <td align="center" rowspan="2" width="70%">
- API<br>Documentation<br>Frame<br><br><br>
- </td>
- </tr>
- <tr>
- <td align="center">
- <font size="-1">Module<br>Contents<hr> <br>...<br> </font>
- </td>
- </tr>
-</table><br>
-</center>
-
-<p> The <b>project contents frame</b> contains a list of all packages
-and modules that are defined by the project. Clicking on an entry
-will display its contents in the module contents frame. Clicking on a
-special entry, labeled "Everything," will display the contents of
-the entire project. </p>
-
-<p> The <b>module contents frame</b> contains a list of every
-submodule, class, type, exception, function, and variable defined by a
-module or package. Clicking on an entry will display its
-documentation in the API documentation frame. Clicking on the name of
-the module, at the top of the frame, will display the documentation
-for the module itself. </p>
-
-<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top
-navigation bar can be used to control whether the table of contents is
-displayed or not. </p>
-
-<h2> The Navigation Bar </h2>
-
-<p> A navigation bar is located at the top and bottom of every page.
-It indicates what type of page you are currently viewing, and allows
-you to go to related pages. The following table describes the labels
-on the navigation bar. Note that not some labels (such as
-[Parent]) are not displayed on all pages. </p>
-
-<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
-<tr class="summary">
- <th>Label</th>
- <th>Highlighted when...</th>
- <th>Links to...</th>
-</tr>
- <tr><td valign="top"><b>[Parent]</b></td>
- <td valign="top"><i>(never highlighted)</i></td>
- <td valign="top"> the parent of the current package </td></tr>
- <tr><td valign="top"><b>[Package]</b></td>
- <td valign="top">viewing a package</td>
- <td valign="top">the package containing the current object
- </td></tr>
- <tr><td valign="top"><b>[Module]</b></td>
- <td valign="top">viewing a module</td>
- <td valign="top">the module containing the current object
- </td></tr>
- <tr><td valign="top"><b>[Class]</b></td>
- <td valign="top">viewing a class </td>
- <td valign="top">the class containing the current object</td></tr>
- <tr><td valign="top"><b>[Trees]</b></td>
- <td valign="top">viewing the trees page</td>
- <td valign="top"> the trees page </td></tr>
- <tr><td valign="top"><b>[Index]</b></td>
- <td valign="top">viewing the index page</td>
- <td valign="top"> the index page </td></tr>
- <tr><td valign="top"><b>[Help]</b></td>
- <td valign="top">viewing the help page</td>
- <td valign="top"> the help page </td></tr>
-</table>
-
-<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below
-the top navigation bar can be used to control whether documentation
-for private objects is displayed. Private objects are usually defined
-as objects whose (short) names begin with a single underscore, but do
-not end with an underscore. For example, "<code>_x</code>",
-"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
-are private objects; but "<code>re.sub</code>",
-"<code>__init__</code>", and "<code>type_</code>" are not. However,
-if a module defines the "<code>__all__</code>" variable, then its
-contents are used to decide which objects are private. </p>
-
-<p> A timestamp below the bottom navigation bar indicates when each
-page was last updated. </p>
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Help </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
- <title> API Documentation </title>
-</head>
-<frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="toc.html" name="moduleListFrame">
- <frame src="toc-everything.html" name="moduleFrame">
- </frameset>
- <frame src="lightmediascanner-module.html" name="mainFrame">
-</frameset>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Index</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Index </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/indices.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="indices.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-<br />
-
-<!-- =========== START OF IDENTIFIER INDEX =========== -->
-<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="index">
- <th colspan="2">Identifier Index</th></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__pyx_vtable__"><code>__pyx_vtable__</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></td>
- <td>Module in package <a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add"><code>charset_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del"><code>charset_del</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check"><code>check</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval"><code>commit_interval</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path"><code>db_path</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete"><code>delete</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval"><code>get_commit_interval</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout"><code>get_slave_timeout</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing"><code>is_processing</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></td>
- <td>Package</td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a></td>
- <td>Class in module <a href="lightmediascanner.c_lightmediascanner-module.html"><code>lightmediascanner.c_lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name"><code>name</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a></td>
- <td>Class in module <a href="lightmediascanner.c_lightmediascanner-module.html"><code>lightmediascanner.c_lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add"><code>parser_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del"><code>parser_del</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add"><code>parser_find_and_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers"><code>parsers</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process"><code>process</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner"><code>scanner</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval"><code>set_commit_interval</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout"><code>set_slave_timeout</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout"><code>slave_timeout</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
-</table>
-<br />
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Index </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th bgcolor="#70b0f0" class="navselect"> Home </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Package lightmediascanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/lightmediascanner-module.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner-module.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF PACKAGE DESCRIPTION =========== -->
-<h2 class="package">Package lightmediascanner</h2>
-
-
-<!-- =========== START OF SUBMODULES =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Submodules</th></tr>
- <tr><td><ul>
-<li> <b><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></b>
- </ul></td></tr>
-</table><br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th bgcolor="#70b0f0" class="navselect"> Home </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- Module c_lightmediascanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/lightmediascanner.c_lightmediascanner-module.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner-module.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF MODULE DESCRIPTION =========== -->
-<h2 class="module">Module lightmediascanner.c_lightmediascanner</h2>
-
-
-<!-- =========== START OF CLASSES =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Classes</th></tr>
-<tr><td width="15%">
- <b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a></b></td>
- <td> </td></tr>
-<tr><td width="15%">
- <b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a></b></td>
- <td> </td></tr>
-</table><br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner.LightMediaScanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
- Class LightMediaScanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type LightMediaScanner</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>LightMediaScanner</b>
-</pre><br />
-
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add" class="summary-sig-name"><code>charset_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add charset to list of supported input charsets/encoding.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del" class="summary-sig-name"><code>charset_del</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Del charset from list of supported input charsets/encoding.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Check (and update) files under directory.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> int
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval" class="summary-sig-name"><code>get_commit_interval</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> int
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout" class="summary-sig-name"><code>get_slave_timeout</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing" class="summary-sig-name"><code>is_processing</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add" class="summary-sig-name"><code>parser_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add a new plugin/parser based on it's whole path to shared object.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del" class="summary-sig-name"><code>parser_del</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Delete a plugin/parser.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add" class="summary-sig-name"><code>parser_find_and_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add a new plugin/parser based on it's name.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process" class="summary-sig-name"><code>process</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Process directory recursively.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval" class="summary-sig-name"><code>set_commit_interval</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Set the number of transactions between commits.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout" class="summary-sig-name"><code>set_slave_timeout</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Set maximum time a parser may use.</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval"><code>commit_interval</code></a></b> = <span title="<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><attribute 'commit_interval' of 'light<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path"><code>db_path</code></a></b> = <span title="<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><member 'db_path' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers"><code>parsers</code></a></b> = <span title="<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><member 'parsers' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout"><code>slave_timeout</code></a></b> = <span title="<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><attribute 'slave_timeout' of 'lightmedi<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="charset_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">charset_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Add charset to list of supported input charsets/encoding.</p>
- If some string in analysed/parsed files are not UTF-8, then it will
- try agains a list of charsets registered with this function.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="charset_del"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">charset_del</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Del charset from list of supported input charsets/encoding.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="check"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">check</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Check (and update) files under directory.</p>
- This operates on all files in all sub directories of top_path using
- the added parsers. If files are up to date, nothing is done, otherwise
- they can be marked as deleted or updated if they still exists, but with
- different size or modification time.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="get_commit_interval"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">get_commit_interval</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- int
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="get_slave_timeout"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">get_slave_timeout</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- int
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="is_processing"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">is_processing</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- bool
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Add a new plugin/parser based on it's whole path to shared
- object.
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_del"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_del</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Delete a plugin/parser.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_find_and_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_find_and_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Add a new plugin/parser based on it's name.
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="process"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">process</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Process directory recursively.</p>
- This operates on all files in all sub directories of top_path using
- the added parsers.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="set_commit_interval"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">set_commit_interval</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Set the number of transactions between commits.</p>
- <p>Sets how many transactions/files to handle in one commit, the more
- the faster, but if one parser takes too long and it's killed due
- slave_timeout being exceeded, then at most this number of transactions
- will be lost.</p>
- Note that transaction here is not a single SQL statement, but it is
- considered to be the processing of a file, which can be more than just
- one.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="set_slave_timeout"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">set_slave_timeout</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Set maximum time a parser may use.</p>
- This will be the timeout before killing the slave process running
- some parser. If this happens, another slave process will be started to
- continue from next file.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="commit_interval"></a>
-<h3>commit_interval</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner<span class="variable-linewrap">\</span>
-.LightMediaScanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="db_path"></a>
-<h3>db_path</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMedia<span class="variable-linewrap">\</span>
-Scanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="parsers"></a>
-<h3>parsers</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMedia<span class="variable-linewrap">\</span>
-Scanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="slave_timeout"></a>
-<h3>slave_timeout</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.L<span class="variable-linewrap">\</span>
-ightMediaScanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner.Parser</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
- Class Parser
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/lightmediascanner.c_lightmediascanner.Parser-class.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner.Parser-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type Parser</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>Parser</b>
-</pre><br />
-
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete" class="summary-sig-name"><code>delete</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Same as LightMediaScanner.parser_del(self).</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>PyCObject</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__pyx_vtable__"><code>__pyx_vtable__</code></a></b> = <span title="<PyCObject object at 0xb7f40338>"><code><PyCObject object at 0xb7f40338> </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name"><code>name</code></a></b> = <span title="<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"><code><attribute 'name' of 'lightmediascanner.c_lightme<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner"><code>scanner</code></a></b> = <span title="<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"><code><member 'scanner' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="delete"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">delete</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Same as LightMediaScanner.parser_del(self).
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__pyx_vtable__"></a>
-<h3>__pyx_vtable__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>PyCObject</code>
-
- </dd>
-<span title="<PyCObject object at 0xb7f40338>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<PyCObject object at 0xb7f40338> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="name"></a>
-<h3>name</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' ob<span class="variable-linewrap">\</span>
-jects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="scanner"></a>
-<h3>scanner</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' ob<span class="variable-linewrap">\</span>
-jects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Everything</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b>Everything</b></font></center>
-<hr>
-
-<!-- =========== START OF ALL CLASSES =========== -->
-<font size="+1"><b>All Classes</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">lightmediascanner.c_lightmediascanner.LightMediaScanner</a><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html">lightmediascanner.c_lightmediascanner.Parser</a><br />
-<br />
-
-<hr>
-<font size="-2">[show private | <a href="../public/toc-everything.html">hide private</a>]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b><a target="mainFrame" href="lightmediascanner-module.html">lightmediascanner</a></b></font></center>
-<hr>
-
-<!-- =========== START OF MODULES =========== -->
-<font size="+1"><b>Modules</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a><br />
-<br />
-
-<hr>
-<font size="-2">[show private | <a href="../public/toc-lightmediascanner-module.html">hide private</a>]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b><a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a></b></font></center>
-<hr>
-
-<!-- =========== START OF CLASSES =========== -->
-<font size="+1"><b>Classes</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a><br />
-<br />
-
-<hr>
-<font size="-2">[show private | <a href="../public/toc-lightmediascanner.c_lightmediascanner-module.html">hide private</a>]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Table of Contents</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b>Table of Contents</b></font></center>
-<hr>
-<a target="moduleFrame" href="toc-everything.html">Everything</a><br />
-
-<!-- =========== START OF PACKAGES =========== -->
-<br /><font size="+1"><b>Packages</b></font><br />
-<a target="moduleFrame" href="toc-lightmediascanner-module.html">lightmediascanner</a><br />
-
-<!-- =========== START OF MODULES =========== -->
-<br /><font size="+1"><b>Modules</b></font><br />
-<a target="moduleFrame" href="toc-lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a><br />
-
-<br /><hr>
-<font size="-2">[show private | <a href="../public/toc.html">hide private</a>]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Module and Class Hierarchies</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Trees </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[show private | <a href="../public/trees.html">hide private</a>]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="trees.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF MODULE HIERARCHY =========== -->
-<h2>Module Hierarchy</h2>
-<ul>
-<li> <b><a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></b>
- <ul>
- <li> <b><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></b>
- </ul>
-</ul>
-
-<!-- =========== START OF CLASS HIERARCHY =========== -->
-<h2>Class Hierarchy</h2>
-<ul>
- <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i>
-The most base type</i>
- <ul>
- <li> <b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></b>
- <li> <b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></b>
- <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i>
-type(object) -> the object's type type(name, bases, dict) -> a
-new type</i>
- </ul>
-</ul>
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>__builtin__.object</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Module __builtin__ ::
- Class object
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.object-class.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.object-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type object</h2>
-
-<dl><dt><b>Known Subclasses:</b></dt>
-<dd>
- <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a>,
- <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a>,
- <a href="__builtin__.type-class.html"><code>type</code></a></dd></dl>
-
-<hr/>
-
-The most base type
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__repr__() <==> repr(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__str__() <==> str(x)</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
- <td><a name="__class__"></a><b><code>__class__</code></b> = <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__delattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__delattr__('name') <==> del x.name
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__getattribute__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__getattribute__('name') <==> x.name
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__hash__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Hashing function)</i>
- </h3>
- x.__hash__() <==> hash(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-hash(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__reduce__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__reduce__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- helper for pickle
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__reduce_ex__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__reduce_ex__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- helper for pickle
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__repr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Representation operator)</i>
- </h3>
- x.__repr__() <==> repr(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-repr(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__setattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__setattr__('name', value) <==> x.name = value
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="__str__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__str__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Informal representation operator)</i>
- </h3>
- x.__str__() <==> str(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-str(x)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>__builtin__.type</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Module __builtin__ ::
- Class type
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/__builtin__.type-class.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="__builtin__.type-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type type</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>type</b>
-</pre><br />
-
-<hr/>
-
-type(object) -> the object's type type(name, bases, dict) -> a
-new type
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__call__" class="summary-sig-name"><code>__call__</code></a>(<span class=summary-sig-arg>x</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__call__(...) <==> x(...)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__cmp__" class="summary-sig-name"><code>__cmp__</code></a>(<span class=summary-sig-arg>x</span>,
- <span class=summary-sig-arg>y</span>)</span></code>
-<br />
-x.__cmp__(y) <==> cmp(x,y)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__repr__() <==> repr(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1">list of immediate subclasses</font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#__subclasses__" class="summary-sig-name"><code>__subclasses__</code></a>()</span></code>
-<br />
-__subclasses__() -> list of immediate subclasses</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1">list</font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.type-class.html#mro" class="summary-sig-name"><code>mro</code></a>()</span></code>
-<br />
-return a type's method resolution order</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__str__() <==> str(x)</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>type</code></font></td>
- <td><a name="__base__"></a><b><code>__base__</code></b> = <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></b> = <span title="(<type 'object'>,)"><code>(<type 'object'>,) </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></b> = <span title="424">424 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></b> = <span title="132">132 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></b> = <span title="153067">153067 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></b> = <span title="20">20 </span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>tuple</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></b> = <span title="(<type 'type'>, <type 'object'>)"><code>(<type 'type'>, <type 'object'>) </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></b> = <span title="'type'"><code><span class="variable-quote">'</span>type<span class="variable-quote">'</span> </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
-<td><b><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></b> = <span title="184">184 </span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__call__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__call__</span>(<span class=sig-arg>x</span>,
- <span class="sig-vararg">...</span>)</span>
- <br /><i>(Call operator)</i>
- </h3>
- x.__call__(...) <==> x(...)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-x(...)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__cmp__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__cmp__</span>(<span class=sig-arg>x</span>,
- <span class=sig-arg>y</span>)</span>
- <br /><i>(Comparison operator)</i>
- </h3>
- x.__cmp__(y) <==> cmp(x,y)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-cmp(x,y)
-</pre>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__delattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__delattr__('name') <==> del x.name
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__delattr__"><code>__builtin__.object.__delattr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__getattribute__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__getattribute__('name') <==> x.name
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__getattribute__"><code>__builtin__.object.__getattribute__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__hash__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__hash__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Hashing function)</i>
- </h3>
- x.__hash__() <==> hash(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-hash(x)
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__hash__"><code>__builtin__.object.__hash__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__repr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__repr__</span>(<span class=sig-arg>x</span>)</span>
- <br /><i>(Representation operator)</i>
- </h3>
- x.__repr__() <==> repr(x)
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-repr(x)
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__repr__"><code>__builtin__.object.__repr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__setattr__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- x.__setattr__('name', value) <==> x.name = value
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__setattr__"><code>__builtin__.object.__setattr__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__subclasses__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__subclasses__</span>()</span>
- </h3>
- __subclasses__() -> list of immediate subclasses
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-list of immediate subclasses </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="mro"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">mro</span>()</span>
- </h3>
- return a type's method resolution order
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-list </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__bases__"></a>
-<h3>__bases__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>tuple</code>
-
- </dd>
-<span title="(<type 'object'>,)"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-(<type 'object'>,) </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__basicsize__"></a>
-<h3>__basicsize__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="424"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-424 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__dictoffset__"></a>
-<h3>__dictoffset__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="132"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-132 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__flags__"></a>
-<h3>__flags__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="153067"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-153067 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__itemsize__"></a>
-<h3>__itemsize__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="20"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-20 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__mro__"></a>
-<h3>__mro__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>tuple</code>
-
- </dd>
-<span title="(<type 'type'>, <type 'object'>)"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-(<type 'type'>, <type 'object'>) </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__name__"></a>
-<h3>__name__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>str</code>
-
- </dd>
-<span title="'type'"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<span class="variable-quote">'</span>type<span class="variable-quote">'</span> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__weakrefoffset__"></a>
-<h3>__weakrefoffset__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>int</code>
-
- </dd>
-<span title="184"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-184 </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-
-/* Body color */
-body { background: #ffffff; color: #000000; }
-
-/* Tables */
-table.summary, table.details, table.index
- { background: #e8f0f8; color: #000000; }
-tr.summary, tr.details, tr.index
- { background: #70b0f0; color: #000000;
- text-align: left; font-size: 120%; }
-tr.group { background: #c0e0f8; color: #000000;
- text-align: left; font-size: 120%;
- font-style: italic; }
-
-/* Documentation page titles */
-h2.module { margin-top: 0.2em; }
-h2.class { margin-top: 0.2em; }
-
-/* Headings */
-h1.heading { font-size: +140%; font-style: italic;
- font-weight: bold; }
-h2.heading { font-size: +125%; font-style: italic;
- font-weight: bold; }
-h3.heading { font-size: +110%; font-style: italic;
- font-weight: normal; }
-
-/* Base tree */
-pre.base-tree { font-size: 80%; margin: 0; }
-
-/* Details Sections */
-table.func-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.func-detail { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-table.var-details { background: #e8f0f8; color: #000000;
- border: 2px groove #c0d0d0;
- padding: 0 1em 0 1em; margin: 0.4em 0 0 0; }
-h3.var-details { background: transparent; color: #000000;
- margin: 0 0 1em 0; }
-
-/* Function signatures */
-.sig { background: transparent; color: #000000;
- font-weight: bold; }
-.sig-name { background: transparent; color: #006080; }
-.sig-arg, .sig-kwarg, .sig-vararg
- { background: transparent; color: #008060; }
-.sig-default { background: transparent; color: #602000; }
-.summary-sig { background: transparent; color: #000000; }
-.summary-sig-name { background: transparent; color: #204080; }
-.summary-sig-arg, .summary-sig-kwarg, .summary-sig-vararg
- { background: transparent; color: #008060; }
-
-/* Doctest blocks */
-.py-src { background: transparent; color: #000000; }
-.py-prompt { background: transparent; color: #005050;
- font-weight: bold;}
-.py-string { background: transparent; color: #006030; }
-.py-comment { background: transparent; color: #003060; }
-.py-keyword { background: transparent; color: #600000; }
-.py-output { background: transparent; color: #404040; }
-pre.doctestblock { background: #f4faff; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-table pre.doctestblock
- { background: #dce4ec; color: #000000;
- padding: .5em; margin: 1em;
- border: 1px solid #708890; }
-
-/* Variable values */
-pre.variable { background: #dce4ec; color: #000000;
- padding: .5em; margin: 0;
- border: 1px solid #708890; }
-.variable-linewrap { background: transparent; color: #604000; }
-.variable-ellipsis { background: transparent; color: #604000; }
-.variable-quote { background: transparent; color: #604000; }
-.re { background: transparent; color: #000000; }
-.re-char { background: transparent; color: #006030; }
-.re-op { background: transparent; color: #600000; }
-.re-group { background: transparent; color: #003060; }
-.re-ref { background: transparent; color: #404040; }
-
-/* Navigation bar */
-table.navbar { background: #a0c0ff; color: #0000ff;
- border: 2px groove #c0d0d0; }
-th.navbar { background: #a0c0ff; color: #0000ff; }
-th.navselect { background: #70b0ff; color: #000000; }
-.nomargin { margin: 0; }
-
-/* Links */
-a:link { background: transparent; color: #0000ff; }
-a:visited { background: transparent; color: #204080; }
-a.navbar:link { background: transparent; color: #0000ff;
- text-decoration: none; }
-a.navbar:visited { background: transparent; color: #204080;
- text-decoration: none; }
-
-/* Lists */
-ul { margin-top: 0; }
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
- <title> API Documentation </title>
-</head>
-<frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="toc.html" name="moduleListFrame">
- <frame src="toc-everything.html" name="moduleFrame">
- </frameset>
- <frame src="lightmediascanner-module.html" name="mainFrame">
-</frameset>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Help</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Help </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/help.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="help.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<center><h2> API Documentation </h2></center>
-
-<p> This document contains the API (Application Programming Interface)
-documentation for this project. Documentation for the Python
-objects defined by the project is divided into separate pages for each
-package, module, and class. The API documentation also includes two
-pages containing information about the project as a whole: a trees
-page, and an index page. </p>
-
-<h2> Object Documentation </h2>
-
- <p>Each <b>Package Documentation</b> page contains:
- <ul>
- <li> A description of the package. </li>
- <li> A list of the modules and sub-packages contained by the
- package. </li>
- <li> A summary of the classes defined by the package. </li>
- <li> A summary of the functions defined by the package. </li>
- <li> A summary of the variables defined by the package. </li>
- <li> A detailed description of each function defined by the
- package. </li>
- <li> A detailed description of each variable defined by the
- package. </li>
- </ul></p>
-
- <p>Each <b>Module Documentation</b> page contains:
- <ul>
- <li> A description of the module. </li>
- <li> A summary of the classes defined by the module. </li>
- <li> A summary of the functions defined by the module. </li>
- <li> A summary of the variables defined by the module. </li>
- <li> A detailed description of each function defined by the
- module. </li>
- <li> A detailed description of each variable defined by the
- module. </li>
- </ul></p>
-
- <p>Each <b>Class Documentation</b> page contains:
- <ul>
- <li> A class inheritance diagram. </li>
- <li> A list of known subclasses. </li>
- <li> A description of the class. </li>
- <li> A summary of the methods defined by the class. </li>
- <li> A summary of the instance variables defined by the class. </li>
- <li> A summary of the class (static) variables defined by the
- class. </li>
- <li> A detailed description of each method defined by the
- class. </li>
- <li> A detailed description of each instance variable defined by the
- class. </li>
- <li> A detailed description of each class (static) variable defined
- by the class. </li>
- </ul></p>
-
-<h2> Project Documentation </h2>
-
- <p> The <b>Trees</b> page contains the module and class hierarchies:
- <ul>
- <li> The <i>module hierarchy</i> lists every package and module, with
- modules grouped into packages. At the top level, and within each
- package, modules and sub-packages are listed alphabetically. </li>
- <li> The <i>class hierarchy</i> lists every class, grouped by base
- class. If a class has more than one base class, then it will be
- listed under each base class. At the top level, and under each base
- class, classes are listed alphabetically. </li>
- </ul></p>
-
- <p> The <b>Index</b> page contains indices of terms and
- identifiers:
- <ul>
- <li> The <i>term index</i> lists every term indexed by any object's
- documentation. For each term, the index provides links to each
- place where the term is indexed. </li>
- <li> The <i>identifier index</i> lists the (short) name of every package,
- module, class, method, function, variable, and parameter. For each
- identifier, the index provides a short description, and a link to
- its documentation. </li>
- </ul></p>
-
-<h2> The Table of Contents </h2>
-
-<p> The table of contents occupies the two frames on the left side of
-the window. The upper-left frame displays the <i>project
-contents</i>, and the lower-left frame displays the <i>module
-contents</i>: </p>
-
-<center>
-<table class="summary" border="1" cellspacing="0" cellpadding="3">
- <tr heigh="30%">
- <td align="center">
- <font size="-1">Project<br>Contents<hr>...</font></td>
- <td align="center" rowspan="2" width="70%">
- API<br>Documentation<br>Frame<br><br><br>
- </td>
- </tr>
- <tr>
- <td align="center">
- <font size="-1">Module<br>Contents<hr> <br>...<br> </font>
- </td>
- </tr>
-</table><br>
-</center>
-
-<p> The <b>project contents frame</b> contains a list of all packages
-and modules that are defined by the project. Clicking on an entry
-will display its contents in the module contents frame. Clicking on a
-special entry, labeled "Everything," will display the contents of
-the entire project. </p>
-
-<p> The <b>module contents frame</b> contains a list of every
-submodule, class, type, exception, function, and variable defined by a
-module or package. Clicking on an entry will display its
-documentation in the API documentation frame. Clicking on the name of
-the module, at the top of the frame, will display the documentation
-for the module itself. </p>
-
-<p> The "<b>frames</b>" and "<b>no frames</b>" buttons below the top
-navigation bar can be used to control whether the table of contents is
-displayed or not. </p>
-
-<h2> The Navigation Bar </h2>
-
-<p> A navigation bar is located at the top and bottom of every page.
-It indicates what type of page you are currently viewing, and allows
-you to go to related pages. The following table describes the labels
-on the navigation bar. Note that not some labels (such as
-[Parent]) are not displayed on all pages. </p>
-
-<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
-<tr class="summary">
- <th>Label</th>
- <th>Highlighted when...</th>
- <th>Links to...</th>
-</tr>
- <tr><td valign="top"><b>[Parent]</b></td>
- <td valign="top"><i>(never highlighted)</i></td>
- <td valign="top"> the parent of the current package </td></tr>
- <tr><td valign="top"><b>[Package]</b></td>
- <td valign="top">viewing a package</td>
- <td valign="top">the package containing the current object
- </td></tr>
- <tr><td valign="top"><b>[Module]</b></td>
- <td valign="top">viewing a module</td>
- <td valign="top">the module containing the current object
- </td></tr>
- <tr><td valign="top"><b>[Class]</b></td>
- <td valign="top">viewing a class </td>
- <td valign="top">the class containing the current object</td></tr>
- <tr><td valign="top"><b>[Trees]</b></td>
- <td valign="top">viewing the trees page</td>
- <td valign="top"> the trees page </td></tr>
- <tr><td valign="top"><b>[Index]</b></td>
- <td valign="top">viewing the index page</td>
- <td valign="top"> the index page </td></tr>
- <tr><td valign="top"><b>[Help]</b></td>
- <td valign="top">viewing the help page</td>
- <td valign="top"> the help page </td></tr>
-</table>
-
-<p> The "<b>show private</b>" and "<b>hide private</b>" buttons below
-the top navigation bar can be used to control whether documentation
-for private objects is displayed. Private objects are usually defined
-as objects whose (short) names begin with a single underscore, but do
-not end with an underscore. For example, "<code>_x</code>",
-"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
-are private objects; but "<code>re.sub</code>",
-"<code>__init__</code>", and "<code>type_</code>" are not. However,
-if a module defines the "<code>__all__</code>" variable, then its
-contents are used to decide which objects are private. </p>
-
-<p> A timestamp below the bottom navigation bar indicates when each
-page was last updated. </p>
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Help </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-<head>
- <title> API Documentation </title>
-</head>
-<frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="toc.html" name="moduleListFrame">
- <frame src="toc-everything.html" name="moduleFrame">
- </frameset>
- <frame src="lightmediascanner-module.html" name="mainFrame">
-</frameset>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Index</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Index </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/indices.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="indices.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-<br />
-
-<!-- =========== START OF IDENTIFIER INDEX =========== -->
-<table class="index" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="index">
- <th colspan="2">Identifier Index</th></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__bases__"><code>__bases__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__basicsize__"><code>__basicsize__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__call__"><code>__call__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__cmp__"><code>__cmp__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__delattr__"><code>__delattr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__delattr__"><code>__delattr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__dictoffset__"><code>__dictoffset__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__flags__"><code>__flags__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__getattribute__"><code>__getattribute__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__getattribute__"><code>__getattribute__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__hash__"><code>__hash__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__hash__"><code>__hash__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__"><code>__init__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__itemsize__"><code>__itemsize__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__mro__"><code>__mro__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__name__"><code>__name__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__"><code>__new__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__pyx_vtable__"><code>__pyx_vtable__</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce__"><code>__reduce__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__reduce_ex__"><code>__reduce_ex__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__repr__"><code>__repr__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__setattr__"><code>__setattr__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__setattr__"><code>__setattr__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__str__"><code>__str__</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__subclasses__"><code>__subclasses__</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#__weakrefoffset__"><code>__weakrefoffset__</code></a></td>
- <td>Variable in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></td>
- <td>Module in package <a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add"><code>charset_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del"><code>charset_del</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check"><code>check</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval"><code>commit_interval</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path"><code>db_path</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete"><code>delete</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval"><code>get_commit_interval</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout"><code>get_slave_timeout</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing"><code>is_processing</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></td>
- <td>Package</td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a></td>
- <td>Class in module <a href="lightmediascanner.c_lightmediascanner-module.html"><code>lightmediascanner.c_lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html#mro"><code>mro</code></a></td>
- <td>Method in class <a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name"><code>name</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.object-class.html"><code>object</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a></td>
- <td>Class in module <a href="lightmediascanner.c_lightmediascanner-module.html"><code>lightmediascanner.c_lightmediascanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add"><code>parser_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del"><code>parser_del</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add"><code>parser_find_and_add</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers"><code>parsers</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process"><code>process</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner"><code>scanner</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval"><code>set_commit_interval</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout"><code>set_slave_timeout</code></a></td>
- <td>Method in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout"><code>slave_timeout</code></a></td>
- <td>Variable in class <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></td></tr>
- <tr><td width="15%"><a href="__builtin__.type-class.html"><code>type</code></a></td>
- <td>Class in module <code>__builtin__</code></td></tr>
-</table>
-<br />
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Index </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th bgcolor="#70b0f0" class="navselect"> Home </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- Package lightmediascanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/lightmediascanner-module.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner-module.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF PACKAGE DESCRIPTION =========== -->
-<h2 class="package">Package lightmediascanner</h2>
-
-
-<!-- =========== START OF SUBMODULES =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Submodules</th></tr>
- <tr><td><ul>
-<li> <b><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></b>
- </ul></td></tr>
-</table><br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th bgcolor="#70b0f0" class="navselect"> Home </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- Module c_lightmediascanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/lightmediascanner.c_lightmediascanner-module.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner-module.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF MODULE DESCRIPTION =========== -->
-<h2 class="module">Module lightmediascanner.c_lightmediascanner</h2>
-
-
-<!-- =========== START OF CLASSES =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Classes</th></tr>
-<tr><td width="15%">
- <b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>LightMediaScanner</code></a></b></td>
- <td> </td></tr>
-<tr><td width="15%">
- <b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>Parser</code></a></b></td>
- <td> </td></tr>
-</table><br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner.LightMediaScanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
- Class LightMediaScanner
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type LightMediaScanner</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>LightMediaScanner</b>
-</pre><br />
-
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_add" class="summary-sig-name"><code>charset_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add charset to list of supported input charsets/encoding.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#charset_del" class="summary-sig-name"><code>charset_del</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Del charset from list of supported input charsets/encoding.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#check" class="summary-sig-name"><code>check</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Check (and update) files under directory.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> int
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_commit_interval" class="summary-sig-name"><code>get_commit_interval</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> int
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#get_slave_timeout" class="summary-sig-name"><code>get_slave_timeout</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> bool
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#is_processing" class="summary-sig-name"><code>is_processing</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_add" class="summary-sig-name"><code>parser_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add a new plugin/parser based on it's whole path to shared object.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_del" class="summary-sig-name"><code>parser_del</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Delete a plugin/parser.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
-</font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parser_find_and_add" class="summary-sig-name"><code>parser_find_and_add</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Add a new plugin/parser based on it's name.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#process" class="summary-sig-name"><code>process</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Process directory recursively.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_commit_interval" class="summary-sig-name"><code>set_commit_interval</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Set the number of transactions between commits.</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#set_slave_timeout" class="summary-sig-name"><code>set_slave_timeout</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Set maximum time a parser may use.</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#commit_interval"><code>commit_interval</code></a></b> = <span title="<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><attribute 'commit_interval' of 'light<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#db_path"><code>db_path</code></a></b> = <span title="<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><member 'db_path' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#parsers"><code>parsers</code></a></b> = <span title="<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><member 'parsers' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html#slave_timeout"><code>slave_timeout</code></a></b> = <span title="<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"><code><attribute 'slave_timeout' of 'lightmedi<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="charset_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">charset_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Add charset to list of supported input charsets/encoding.</p>
- If some string in analysed/parsed files are not UTF-8, then it will
- try agains a list of charsets registered with this function.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="charset_del"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">charset_del</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Del charset from list of supported input charsets/encoding.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="check"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">check</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Check (and update) files under directory.</p>
- This operates on all files in all sub directories of top_path using
- the added parsers. If files are up to date, nothing is done, otherwise
- they can be marked as deleted or updated if they still exists, but with
- different size or modification time.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="get_commit_interval"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">get_commit_interval</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- int
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="get_slave_timeout"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">get_slave_timeout</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- int
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="is_processing"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">is_processing</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- bool
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Add a new plugin/parser based on it's whole path to shared
- object.
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_del"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_del</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Delete a plugin/parser.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="parser_find_and_add"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">parser_find_and_add</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Add a new plugin/parser based on it's name.
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
- <a
- href="lightmediascanner.c_lightmediascanner.Parser-class.html"
- class="link"><code>Parser</code></a>
- </dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="process"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">process</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Process directory recursively.</p>
- This operates on all files in all sub directories of top_path using
- the added parsers.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="set_commit_interval"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">set_commit_interval</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Set the number of transactions between commits.</p>
- <p>Sets how many transactions/files to handle in one commit, the more
- the faster, but if one parser takes too long and it's killed due
- slave_timeout being exceeded, then at most this number of transactions
- will be lost.</p>
- Note that transaction here is not a single SQL statement, but it is
- considered to be the processing of a file, which can be more than just
- one.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-
-<a name="set_slave_timeout"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">set_slave_timeout</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- <p>Set maximum time a parser may use.</p>
- This will be the timeout before killing the slave process running
- some parser. If this happens, another slave process will be started to
- continue from next file.
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="commit_interval"></a>
-<h3>commit_interval</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'commit_interval' of 'lightmediascanner.c_lightmediascanner<span class="variable-linewrap">\</span>
-.LightMediaScanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="db_path"></a>
-<h3>db_path</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'db_path' of 'lightmediascanner.c_lightmediascanner.LightMedia<span class="variable-linewrap">\</span>
-Scanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="parsers"></a>
-<h3>parsers</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'parsers' of 'lightmediascanner.c_lightmediascanner.LightMedia<span class="variable-linewrap">\</span>
-Scanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="slave_timeout"></a>
-<h3>slave_timeout</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.LightMediaScanner' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'slave_timeout' of 'lightmediascanner.c_lightmediascanner.L<span class="variable-linewrap">\</span>
-ightMediaScanner' objects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner.Parser</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- <font size="-1"><b class="breadcrumbs">
- <a href="lightmediascanner-module.html">Package lightmediascanner</a> ::
- <a href="lightmediascanner.c_lightmediascanner-module.html">Module c_lightmediascanner</a> ::
- Class Parser
- </b></font></br>
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/lightmediascanner.c_lightmediascanner.Parser-class.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="lightmediascanner.c_lightmediascanner.Parser-class.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF CLASS DESCRIPTION =========== -->
-<h2 class="class">Type Parser</h2>
-
-<pre class="base-tree">
-<a href="__builtin__.object-class.html"><code>object</code></a> --+
- |
- <b>Parser</b>
-</pre><br />
-
-<hr/>
-
-
-<!-- =========== START OF METHOD SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Method Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__init__(...) initializes x; see x.__class__.__doc__ for
-signature</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
- <span class=summary-sig-arg>S</span>,
- <span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-T.__new__(S, ...) -> a new object with type S, a subtype of T</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__repr__"></a><span class="summary-sig"><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><a name="__str__"></a><span class="summary-sig"><span class="summary-sig-name">__str__</span>(<span class="summary-sig-vararg">...</span>)</span></code>
-</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#delete" class="summary-sig-name"><code>delete</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-Same as LightMediaScanner.parser_del(self).</td></tr>
-<tr bgcolor="#e8f0f8" class="group">
- <th colspan="2"> Inherited from object</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__delattr__('name') <==> del x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__getattribute__('name') <==> x.name</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
-<br />
-x.__hash__() <==> hash(x)</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-helper for pickle</td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
- <td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
-<br />
-x.__setattr__('name', value) <==> x.name = value</td></tr>
-</table><br />
-
-
-<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
-<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="summary">
- <th colspan="2">Class Variable Summary</th></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>PyCObject</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#__pyx_vtable__"><code>__pyx_vtable__</code></a></b> = <span title="<PyCObject object at 0xb7f40338>"><code><PyCObject object at 0xb7f40338> </code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>getset_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#name"><code>name</code></a></b> = <span title="<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"><code><attribute 'name' of 'lightmediascanner.c_lightme<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-<tr><td align="right" valign="top" width="15%"><font size="-1"><code>member_descriptor</code></font></td>
-<td><b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html#scanner"><code>scanner</code></a></b> = <span title="<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"><code><member 'scanner' of 'lightmediascanner.c_ligh<span class="variable-ellipsis">...</span></code>
-</span></td></tr>
-</table><br />
-
-
-<!-- =========== START OF METHOD DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Method Details</th></tr>
-</table>
-
-<a name="__init__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-vararg">...</span>)</span>
- <br /><i>(Constructor)</i>
- </h3>
- x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature
- <dl><dt></dt><dd>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__init__"><code>__builtin__.object.__init__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="__new__"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">__new__</span>(<span class=sig-arg>T</span>,
- <span class=sig-arg>S</span>,
- <span class="sig-vararg">...</span>)</span>
- </h3>
- T.__new__(S, ...) -> a new object with type S, a subtype of T
- <dl><dt></dt><dd>
- <dl><dt><b>Returns:</b></dt>
- <dd>
-<pre class="literalblock">
-a new object with type S, a subtype of T
-</pre>
- </dd>
- </dl>
- <dl><dt><b>Overrides:</b></dt>
- <dd><a href="__builtin__.object-class.html#__new__"><code>__builtin__.object.__new__</code></a></dd>
- </dl>
- </dd></dl>
-</td></tr></table>
-
-<a name="delete"></a>
-<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
- <h3><span class="sig"><span class="sig-name">delete</span>(<span class="sig-vararg">...</span>)</span>
- </h3>
- Same as LightMediaScanner.parser_del(self).
- <dl><dt></dt><dd>
- </dd></dl>
-</td></tr></table>
-<br />
-
-
-<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
-<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="details">
- <th colspan="2">Class Variable Details</th></tr>
-</table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="__pyx_vtable__"></a>
-<h3>__pyx_vtable__</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>PyCObject</code>
-
- </dd>
-<span title="<PyCObject object at 0xb7f40338>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<PyCObject object at 0xb7f40338> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="name"></a>
-<h3>name</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>getset_descriptor</code>
-
- </dd>
-<span title="<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<attribute 'name' of 'lightmediascanner.c_lightmediascanner.Parser' ob<span class="variable-linewrap">\</span>
-jects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
-<a name="scanner"></a>
-<h3>scanner</h3>
-<dl>
- <dt></dt>
- <dd>
- <dl>
- <dt><b>Type:</b></dt>
- <dd>
- <code>member_descriptor</code>
-
- </dd>
-<span title="<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' objects>"> <dt><b>Value:</b></dt>
- <dd><table><tr><td>
-<pre class="variable">
-<member 'scanner' of 'lightmediascanner.c_lightmediascanner.Parser' ob<span class="variable-linewrap">\</span>
-jects> </pre>
- </td></tr></table></dd>
-</span> </dl>
- </dd>
-</dl></td></tr></table>
-<br />
-
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Everything</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b>Everything</b></font></center>
-<hr>
-
-<!-- =========== START OF ALL CLASSES =========== -->
-<font size="+1"><b>All Classes</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">lightmediascanner.c_lightmediascanner.LightMediaScanner</a><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html">lightmediascanner.c_lightmediascanner.Parser</a><br />
-<br />
-
-<hr>
-<font size="-2">[<a href="../private/toc-everything.html">show private</a> | hide private]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b><a target="mainFrame" href="lightmediascanner-module.html">lightmediascanner</a></b></font></center>
-<hr>
-
-<!-- =========== START OF MODULES =========== -->
-<font size="+1"><b>Modules</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a><br />
-<br />
-
-<hr>
-<font size="-2">[<a href="../private/toc-lightmediascanner-module.html">show private</a> | hide private]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>lightmediascanner.c_lightmediascanner</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b><a target="mainFrame" href="lightmediascanner.c_lightmediascanner-module.html">c_lightmediascanner</a></b></font></center>
-<hr>
-
-<!-- =========== START OF CLASSES =========== -->
-<font size="+1"><b>Classes</b></font><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html">LightMediaScanner</a><br />
-<a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html">Parser</a><br />
-<br />
-
-<hr>
-<font size="-2">[<a href="../private/toc-lightmediascanner.c_lightmediascanner-module.html">show private</a> | hide private]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Table of Contents</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-<center><font size="+1"><b>Table of Contents</b></font></center>
-<hr>
-<a target="moduleFrame" href="toc-everything.html">Everything</a><br />
-
-<!-- =========== START OF PACKAGES =========== -->
-<br /><font size="+1"><b>Packages</b></font><br />
-<a target="moduleFrame" href="toc-lightmediascanner-module.html">lightmediascanner</a><br />
-
-<!-- =========== START OF MODULES =========== -->
-<br /><font size="+1"><b>Modules</b></font><br />
-<a target="moduleFrame" href="toc-lightmediascanner.c_lightmediascanner-module.html">lightmediascanner.c_lightmediascanner</a><br />
-
-<br /><hr>
-<font size="-2">[<a href="../private/toc.html">show private</a> | hide private]</font>
-</body>
-</html>
+++ /dev/null
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Module and Class Hierarchies</title>
- <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
-</head>
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
- alink="#204080">
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th bgcolor="#70b0f0" class="navselect"> Trees </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="100%">
- </td>
- <td><table cellpadding="0" cellspacing="0">
- <tr><td align="right"><font size="-2">[<a href="../private/trees.html">show private</a> | hide private]</font></td></tr>
- <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="trees.html" target="_top">no frames</a>]</font></td></tr>
- </table></td>
-</tr></table>
-
-<!-- =========== START OF MODULE HIERARCHY =========== -->
-<h2>Module Hierarchy</h2>
-<ul>
-<li> <b><a href="lightmediascanner-module.html"><code>lightmediascanner</code></a></b>
- <ul>
- <li> <b><a href="lightmediascanner.c_lightmediascanner-module.html"><code>c_lightmediascanner</code></a></b>
- </ul>
-</ul>
-
-<!-- =========== START OF CLASS HIERARCHY =========== -->
-<h2>Class Hierarchy</h2>
-<ul>
- <li> <b><a href="__builtin__.object-class.html"><code>__builtin__.object</code></a></b>: <i>
-The most base type</i>
- <ul>
- <li> <b><a href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"><code>lightmediascanner.c_lightmediascanner.LightMediaScanner</code></a></b>
- <li> <b><a href="lightmediascanner.c_lightmediascanner.Parser-class.html"><code>lightmediascanner.c_lightmediascanner.Parser</code></a></b>
- <li> <b><a href="__builtin__.type-class.html"><code>__builtin__.type</code></a></b>: <i>
-type(object) -> the object's type type(name, bases, dict) -> a
-new type</i>
- </ul>
-</ul>
-
-<!-- =========== START OF NAVBAR =========== -->
-<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
- <tr valign="center">
- <th class="navbar"> <a class="navbar" href="lightmediascanner-module.html">Home</a> </th>
- <th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
- <th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
- <th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
- <th class="navbar" width="100%"></th>
- </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td align="left"><font size="-2">Generated by Epydoc 2.1 on Thu Dec 13 02:07:27 2007</font></td>
- <td align="right"><a href="http://epydoc.sourceforge.net"
- ><font size="-2">http://epydoc.sf.net</font></a></td>
- </tr>
-</table>
-</body>
-</html>
--- /dev/null
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["lightmediascanner.c_lightmediascanner.LightMediaScanner-c", "lightmediascanner.c_lightmediascanner.Parser-c", "lightmediascanner.c_lightmediascanner-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+ var target = redirect_url(dottedName);
+ if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+ var msg = document.getElementById("message");
+ msg.innerHTML = "No documentation found for <tt>"+
+ dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Everything</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+ <h2 class="toc">All Classes</h2>
+ <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+ >lightmediascanner.c_lightmediascanner.LightMediaScanner</a><br /> <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+ >lightmediascanner.c_lightmediascanner.Parser</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module lightmediascanner</h1>
+<hr />
+ <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_DELETED"
+ >LMS_PROGRESS_STATUS_DELETED</a><br /> <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_COMM"
+ >LMS_PROGRESS_STATUS_ERROR_COMM</a><br /> <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_ERROR_PARSE"
+ >LMS_PROGRESS_STATUS_ERROR_PARSE</a><br /> <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_KILLED"
+ >LMS_PROGRESS_STATUS_KILLED</a><br /> <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_PROCESSED"
+ >LMS_PROGRESS_STATUS_PROCESSED</a><br /> <a target="mainFrame" href="lightmediascanner-module.html#LMS_PROGRESS_STATUS_UP_TO_DATE"
+ >LMS_PROGRESS_STATUS_UP_TO_DATE</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>c_lightmediascanner</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module c_lightmediascanner</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.LightMediaScanner-class.html"
+ >LightMediaScanner</a><br /> <a target="mainFrame" href="lightmediascanner.c_lightmediascanner.Parser-class.html"
+ >Parser</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Table of Contents</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+ <a target="moduleFrame" href="toc-everything.html">Everything</a>
+ <br />
+ <h2 class="toc">Modules</h2>
+ <a target="moduleFrame" href="toc-lightmediascanner.c_lightmediascanner-module.html"
+ onclick="setFrame('toc-lightmediascanner.c_lightmediascanner-module.html','lightmediascanner.c_lightmediascanner-module.html');" >lightmediascanner.c_lightmediascanner</a><br /><hr />
+ <span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>