Add C-docs to webpage
authorbarbieri <barbieri@gmail.com>
Thu, 13 Dec 2007 05:09:31 +0000 (05:09 +0000)
committerbarbieri <barbieri@gmail.com>
Thu, 13 Dec 2007 05:09:31 +0000 (05:09 +0000)
333 files changed:
www/api/annotated.html [new file with mode: 0644]
www/api/classes.html [new file with mode: 0644]
www/api/doxygen.css [new file with mode: 0644]
www/api/doxygen.png [new file with mode: 0644]
www/api/files.html [new file with mode: 0644]
www/api/functions.html [new file with mode: 0644]
www/api/functions_vars.html [new file with mode: 0644]
www/api/globals.html [new file with mode: 0644]
www/api/globals_0x61.html [new file with mode: 0644]
www/api/globals_0x63.html [new file with mode: 0644]
www/api/globals_0x64.html [new file with mode: 0644]
www/api/globals_0x66.html [new file with mode: 0644]
www/api/globals_0x67.html [new file with mode: 0644]
www/api/globals_0x69.html [new file with mode: 0644]
www/api/globals_0x6c.html [new file with mode: 0644]
www/api/globals_0x6e.html [new file with mode: 0644]
www/api/globals_0x70.html [new file with mode: 0644]
www/api/globals_0x72.html [new file with mode: 0644]
www/api/globals_0x73.html [new file with mode: 0644]
www/api/globals_0x74.html [new file with mode: 0644]
www/api/globals_0x77.html [new file with mode: 0644]
www/api/globals_defs.html [new file with mode: 0644]
www/api/globals_func.html [new file with mode: 0644]
www/api/globals_type.html [new file with mode: 0644]
www/api/globals_vars.html [new file with mode: 0644]
www/api/graph_legend.dot [new file with mode: 0644]
www/api/graph_legend.html [new file with mode: 0644]
www/api/graph_legend.png [new file with mode: 0644]
www/api/group__LMS__API.html [new file with mode: 0644]
www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png [new file with mode: 0644]
www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png [new file with mode: 0644]
www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png [new file with mode: 0644]
www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png [new file with mode: 0644]
www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png [new file with mode: 0644]
www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.map [new file with mode: 0644]
www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png [new file with mode: 0644]
www/api/group__LMS__CHARSET.html [new file with mode: 0644]
www/api/group__LMS__DB.html [new file with mode: 0644]
www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png [new file with mode: 0644]
www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map [new file with mode: 0644]
www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 [new file with mode: 0644]
www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png [new file with mode: 0644]
www/api/group__LMS__Plugin.html [new file with mode: 0644]
www/api/index.html [new file with mode: 0644]
www/api/lightmediascanner_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner_8c.html [new file with mode: 0644]
www/api/lightmediascanner_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner_8h.html [new file with mode: 0644]
www/api/lightmediascanner_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h.html [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__charset__conv_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__check_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__check_8c.html [new file with mode: 0644]
www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__check_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__check_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__check_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__db_8h.html [new file with mode: 0644]
www/api/lightmediascanner__db_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db_8h__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db_8h__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__audio_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__image_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__playlist_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h.html [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h__incl.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c.html [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__db__video_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h.html [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__incl.map [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__plugin_8h__incl.png [new file with mode: 0644]
www/api/lightmediascanner__private_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__private_8h.html [new file with mode: 0644]
www/api/lightmediascanner__private_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__private_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__private_8h__dep__incl.png [new file with mode: 0644]
www/api/lightmediascanner__private_8h__incl.map [new file with mode: 0644]
www/api/lightmediascanner__private_8h__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__private_8h__incl.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__process_8c.html [new file with mode: 0644]
www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map [new file with mode: 0644]
www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 [new file with mode: 0644]
www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png [new file with mode: 0644]
www/api/lightmediascanner__utils_8c-source.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8c.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8c__incl.map [new file with mode: 0644]
www/api/lightmediascanner__utils_8c__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8c__incl.png [new file with mode: 0644]
www/api/lightmediascanner__utils_8h-source.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8h.html [new file with mode: 0644]
www/api/lightmediascanner__utils_8h__dep__incl.map [new file with mode: 0644]
www/api/lightmediascanner__utils_8h__dep__incl.md5 [new file with mode: 0644]
www/api/lightmediascanner__utils_8h__dep__incl.png [new file with mode: 0644]
www/api/modules.html [new file with mode: 0644]
www/api/structfds.html [new file with mode: 0644]
www/api/structlms.html [new file with mode: 0644]
www/api/structlms__audio__info.html [new file with mode: 0644]
www/api/structlms__audio__info__coll__graph.map [new file with mode: 0644]
www/api/structlms__audio__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__audio__info__coll__graph.png [new file with mode: 0644]
www/api/structlms__coll__graph.map [new file with mode: 0644]
www/api/structlms__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__coll__graph.png [new file with mode: 0644]
www/api/structlms__context.html [new file with mode: 0644]
www/api/structlms__db__cache.html [new file with mode: 0644]
www/api/structlms__db__cache__coll__graph.map [new file with mode: 0644]
www/api/structlms__db__cache__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__db__cache__coll__graph.png [new file with mode: 0644]
www/api/structlms__db__cache__entry.html [new file with mode: 0644]
www/api/structlms__file__info.html [new file with mode: 0644]
www/api/structlms__gps__info.html [new file with mode: 0644]
www/api/structlms__image__info.html [new file with mode: 0644]
www/api/structlms__image__info__coll__graph.map [new file with mode: 0644]
www/api/structlms__image__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__image__info__coll__graph.png [new file with mode: 0644]
www/api/structlms__playlist__info.html [new file with mode: 0644]
www/api/structlms__playlist__info__coll__graph.map [new file with mode: 0644]
www/api/structlms__playlist__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__playlist__info__coll__graph.png [new file with mode: 0644]
www/api/structlms__plugin.html [new file with mode: 0644]
www/api/structlms__string__size.html [new file with mode: 0644]
www/api/structlms__video__info.html [new file with mode: 0644]
www/api/structlms__video__info__coll__graph.map [new file with mode: 0644]
www/api/structlms__video__info__coll__graph.md5 [new file with mode: 0644]
www/api/structlms__video__info__coll__graph.png [new file with mode: 0644]
www/api/structparser.html [new file with mode: 0644]
www/api/structparser__coll__graph.map [new file with mode: 0644]
www/api/structparser__coll__graph.md5 [new file with mode: 0644]
www/api/structparser__coll__graph.png [new file with mode: 0644]
www/api/structpinfo.html [new file with mode: 0644]
www/api/structpinfo__coll__graph.map [new file with mode: 0644]
www/api/structpinfo__coll__graph.md5 [new file with mode: 0644]
www/api/structpinfo__coll__graph.png [new file with mode: 0644]
www/api/tab_b.gif [new file with mode: 0644]
www/api/tab_l.gif [new file with mode: 0644]
www/api/tab_r.gif [new file with mode: 0644]
www/api/tabs.css [new file with mode: 0644]

diff --git a/www/api/annotated.html b/www/api/annotated.html
new file mode 100644 (file)
index 0000000..4647f6a
--- /dev/null
@@ -0,0 +1,44 @@
+<!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 Structures</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>Light Media Scanner Data Structures</h1>Here are the data structures with brief descriptions:<table>
+  <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__context.html">lms_context</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__db__cache.html">lms_db_cache</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__file__info.html">lms_file_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__image__info.html">lms_image_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__plugin.html">lms_plugin</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structlms__string__size.html">lms_string_size</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>
+</table>
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/classes.html b/www/api/classes.html
new file mode 100644 (file)
index 0000000..2ae9588
--- /dev/null
@@ -0,0 +1,40 @@
+<!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: Alphabetical List</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;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>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<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">&nbsp;&nbsp;A&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__file__info.html">lms_file_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structparser.html">parser</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__audio__info.html">lms_audio_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;G&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structpinfo.html">pinfo</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;C&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__gps__info.html">lms_gps_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms__playlist__info.html">lms_playlist_info</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__context.html">lms_context</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;I&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__plugin.html">lms_plugin</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;D&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__image__info.html">lms_image_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;S&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structlms__db__cache.html">lms_db_cache</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__string__size.html">lms_string_size</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structlms.html">lms</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;V&nbsp;&nbsp;</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">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;P&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structlms__video__info.html">lms_video_info</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structfds.html">fds</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_A">A</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_C">C</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_G">G</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_I">I</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_L">L</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_P">P</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_S">S</a>&nbsp;|&nbsp;<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/doxygen.css b/www/api/doxygen.css
new file mode 100644 (file)
index 0000000..c7db1a8
--- /dev/null
@@ -0,0 +1,358 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+       font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+BODY,TD {
+       font-size: 90%;
+}
+H1 {
+       text-align: center;
+       font-size: 160%;
+}
+H2 {
+       font-size: 120%;
+}
+H3 {
+       font-size: 100%;
+}
+CAPTION { font-weight: bold }
+DIV.qindex {
+       width: 100%;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+DIV.nav {
+       width: 100%;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+       line-height: 140%;
+}
+DIV.navtab {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+TD.navtab {
+       font-size: 70%;
+}
+A.qindex {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D;
+}
+A.qindex:visited {
+       text-decoration: none;
+       font-weight: bold;
+       color: #1A419D
+}
+A.qindex:hover {
+       text-decoration: none;
+       background-color: #ddddff;
+}
+A.qindexHL {
+       text-decoration: none;
+       font-weight: bold;
+       background-color: #6666cc;
+       color: #ffffff;
+       border: 1px double #9295C2;
+}
+A.qindexHL:hover {
+       text-decoration: none;
+       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 }
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 95%;
+}
+PRE.fragment {
+       border: 1px solid #CCCCCC;
+       background-color: #f5f5f5;
+       margin-top: 4px;
+       margin-bottom: 4px;
+       margin-left: 2px;
+       margin-right: 8px;
+       padding-left: 6px;
+       padding-right: 6px;
+       padding-top: 4px;
+       padding-bottom: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+
+DIV.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
+BODY {
+       background: white;
+       color: black;
+       margin-right: 20px;
+       margin-left: 20px;
+}
+TD.indexkey {
+       background-color: #e8eef2;
+       font-weight: bold;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+       background-color: #e8eef2;
+       font-style: italic;
+       padding-right  : 10px;
+       padding-top    : 2px;
+       padding-left   : 10px;
+       padding-bottom : 2px;
+       margin-left    : 0px;
+       margin-right   : 0px;
+       margin-top     : 2px;
+       margin-bottom  : 2px;
+       border: 1px solid #CCCCCC;
+}
+TR.memlist {
+   background-color: #f0f0f0; 
+}
+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.comment       { color: #800000 }
+SPAN.preprocessor  { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral   { color: #008080 }
+.mdescLeft {
+       padding: 0px 8px 4px 8px;
+       font-size: 80%;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.mdescRight {
+       padding: 0px 8px 4px 8px;
+       font-size: 80%;
+       font-style: italic;
+       background-color: #FAFAFA;
+       border-top: 1px none #E0E0E0;
+       border-right: 1px none #E0E0E0;
+       border-bottom: 1px none #E0E0E0;
+       border-left: 1px none #E0E0E0;
+       margin: 0px;
+}
+.memItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplItemLeft {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplItemRight {
+       padding: 1px 8px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.memTemplParams {
+       padding: 1px 0px 0px 8px;
+       margin: 4px;
+       border-top-width: 1px;
+       border-right-width: 1px;
+       border-bottom-width: 1px;
+       border-left-width: 1px;
+       border-top-color: #E0E0E0;
+       border-right-color: #E0E0E0;
+       border-bottom-color: #E0E0E0;
+       border-left-color: #E0E0E0;
+       border-top-style: solid;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+       color: #606060;
+       background-color: #FAFAFA;
+       font-size: 80%;
+}
+.search     { color: #003399;
+              font-weight: bold;
+}
+FORM.search {
+              margin-bottom: 0px;
+              margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+               color: #000080;
+               font-weight: normal;
+               background-color: #e8eef2;
+}
+TD.tiny      { font-size: 75%;
+}
+a {
+       color: #1A41A8;
+}
+a:visited {
+       color: #2A3798;
+}
+.dirtab { padding: 4px;
+          border-collapse: collapse;
+          border: 1px solid #84b0c7;
+}
+TH.dirtab { background: #e8eef2;
+            font-weight: bold;
+}
+HR { height: 1px;
+     border: none;
+     border-top: 1px solid black;
+}
+
+/* Style for detailed member documentation */
+.memtemplate {
+  font-size: 80%;
+  color: #606060;
+  font-weight: normal;
+} 
+.memnav { 
+  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;
+}
+.memname {
+  white-space: nowrap;
+  font-weight: bold;
+}
+.memdoc{
+  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;
+}
+.paramkey {
+  text-align: right;
+}
+.paramtype {
+  white-space: nowrap;
+}
+.paramname {
+  color: #602020;
+  font-style: italic;
+  white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+       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%; }
diff --git a/www/api/doxygen.png b/www/api/doxygen.png
new file mode 100644 (file)
index 0000000..f0a274b
Binary files /dev/null and b/www/api/doxygen.png differ
diff --git a/www/api/files.html b/www/api/files.html
new file mode 100644 (file)
index 0000000..0767357
--- /dev/null
@@ -0,0 +1,45 @@
+<!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: File Index</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+  <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__charset__conv_8h.html">lightmediascanner_charset_conv.h</a> <a href="lightmediascanner__charset__conv_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__check_8c.html">lightmediascanner_check.c</a> <a href="lightmediascanner__check_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a> <a href="lightmediascanner__db_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__audio_8c.html">lightmediascanner_db_audio.c</a> <a href="lightmediascanner__db__audio_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__common_8c.html">lightmediascanner_db_common.c</a> <a href="lightmediascanner__db__common_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__image_8c.html">lightmediascanner_db_image.c</a> <a href="lightmediascanner__db__image_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__playlist_8c.html">lightmediascanner_db_playlist.c</a> <a href="lightmediascanner__db__playlist_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a> <a href="lightmediascanner__db__private_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__db__video_8c.html">lightmediascanner_db_video.c</a> <a href="lightmediascanner__db__video_8c-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a> <a href="lightmediascanner__plugin_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a> <a href="lightmediascanner__private_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey">src/lib/<a class="el" href="lightmediascanner__process_8c.html">lightmediascanner_process.c</a> <a href="lightmediascanner__process_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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/functions.html b/www/api/functions.html
new file mode 100644 (file)
index 0000000..d269bed
--- /dev/null
@@ -0,0 +1,211 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li class="current"><a href="functions.html"><span>Data&nbsp;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>
+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>album
+: <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info</a>
+<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__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
+</ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <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>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_interval
+: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>cs_conv
+: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
+, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</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>
+<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>
+<li>db_path
+: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
+<li>dl_handle
+: <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser</a>
+<li>dtime
+: <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>entries
+: <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache</a>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>finish
+: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>genre
+: <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info</a>
+<li>gps
+: <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>id
+: <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info</a>
+, <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info</a>
+, <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info</a>
+<li>is_processing
+: <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms</a>
+</ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>latitude
+: <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info</a>
+<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>
+<li>longitude
+: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
+</ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>master
+: <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo</a>
+<li>match
+: <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin</a>
+<li>mtime
+: <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>n_entries
+: <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info</a>
+<li>n_parsers
+: <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms</a>
+<li>name
+: <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin</a>
+</ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_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>parsers
+: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
+<li>path
+: <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info</a>
+<li>path_len
+: <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info</a>
+<li>playcnt
+: <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info</a>
+<li>plugin
+: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
+<li>poll
+: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>r
+: <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds</a>
+<li>rating
+: <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<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>
+<li>slave
+: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
+<li>slave_timeout
+: <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms</a>
+<li>so_path
+: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
+<li>start
+: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</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__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>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>w
+: <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds</a>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/functions_vars.html b/www/api/functions_vars.html
new file mode 100644 (file)
index 0000000..4b08d3e
--- /dev/null
@@ -0,0 +1,211 @@
+<!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 - Variables</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li class="current"><a href="functions.html"><span>Data&nbsp;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>
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>album
+: <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info</a>
+<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__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info</a>
+</ul>
+<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
+<li>base
+: <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>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_interval
+: <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms</a>
+<li>cs_conv
+: <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context</a>
+, <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms</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>
+<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>
+<li>db_path
+: <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms</a>
+<li>dl_handle
+: <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser</a>
+<li>dtime
+: <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
+<li>entries
+: <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache</a>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>finish
+: <a class="el" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">lms_plugin</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>genre
+: <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info</a>
+<li>gps
+: <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info</a>
+</ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>id
+: <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info</a>
+, <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info</a>
+, <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info</a>
+, <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info</a>
+, <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info</a>
+<li>is_processing
+: <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms</a>
+</ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>latitude
+: <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info</a>
+<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>
+<li>longitude
+: <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info</a>
+</ul>
+<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
+<li>master
+: <a class="el" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">pinfo</a>
+<li>match
+: <a class="el" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">lms_plugin</a>
+<li>mtime
+: <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info</a>
+</ul>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>n_entries
+: <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info</a>
+<li>n_parsers
+: <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms</a>
+<li>name
+: <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin</a>
+</ul>
+<h3><a class="anchor" name="index_o">- o -</a></h3><ul>
+<li>orientation
+: <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_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>parsers
+: <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms</a>
+<li>path
+: <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info</a>
+<li>path_len
+: <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info</a>
+<li>playcnt
+: <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info</a>
+<li>plugin
+: <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser</a>
+<li>poll
+: <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo</a>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>r
+: <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds</a>
+<li>rating
+: <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info</a>
+</ul>
+<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
+<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>
+<li>slave
+: <a class="el" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">pinfo</a>
+<li>slave_timeout
+: <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms</a>
+<li>so_path
+: <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser</a>
+<li>start
+: <a class="el" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">lms_plugin</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__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>
+<h3><a class="anchor" name="index_w">- w -</a></h3><ul>
+<li>w
+: <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds</a>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals.html b/www/api/globals.html
new file mode 100644 (file)
index 0000000..b4d869d
--- /dev/null
@@ -0,0 +1,78 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>_DB_T_UPDATE
+: <a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">lightmediascanner_db_audio.c</a>
+<li>_GNU_SOURCE
+: <a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_process.c</a>
+<li>_LIGHTMEDIASCANNER_CHARSET_CONV_H_
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">lightmediascanner_charset_conv.h</a>
+<li>_LIGHTMEDIASCANNER_DB_H_
+: <a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">lightmediascanner_db.h</a>
+<li>_LIGHTMEDIASCANNER_DB_PRIVATE_H_
+: <a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">lightmediascanner_db_private.h</a>
+<li>_LIGHTMEDIASCANNER_H_
+: <a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">lightmediascanner.h</a>
+<li>_LIGHTMEDIASCANNER_PLUGIN_H_
+: <a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">lightmediascanner_plugin.h</a>
+<li>_LIGHTMEDIASCANNER_PRIVATE_H_
+: <a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">lightmediascanner_private.h</a>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x61.html b/www/api/globals_0x61.html
new file mode 100644 (file)
index 0000000..f137da6
--- /dev/null
@@ -0,0 +1,64 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>API
+: <a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_utils.h</a>
+, <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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x63.html b/www/api/globals_0x63.html
new file mode 100644 (file)
index 0000000..b301685
--- /dev/null
@@ -0,0 +1,99 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>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>
+<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>
+<li>lms_charset_conv_add()
+: <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="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>
+<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>
+<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>
+<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>
+<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>
+<li>lms_create_slave()
+: <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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x64.html b/www/api/globals_0x64.html
new file mode 100644 (file)
index 0000000..09ad8e1
--- /dev/null
@@ -0,0 +1,223 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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_COMMIT_INTERVAL
+: <a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">lightmediascanner.c</a>
+<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>
+<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>
+<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>
+<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#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__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__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__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lightmediascanner_db_common.c</a>
+, <a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lightmediascanner_db_private.h</a>
+<li>lms_db_bind_int64()
+: <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__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__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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lightmediascanner_db_private.h</a>
+, <a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lightmediascanner_db_common.c</a>
+<li>lms_db_playlist_add()
+: <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>
+<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>
+<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>
+<li>lms_db_playlist_t
+: <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lightmediascanner_db.h</a>
+<li>lms_db_reset_stmt()
+: <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>
+<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>
+<li>lms_db_table_update_if_required()
+: <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>
+<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__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>
+<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_free()
+: <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lightmediascanner_db.h</a>
+<li>lms_db_video_new()
+: <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db_video.c</a>
+, <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lightmediascanner_db.h</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>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x66.html b/www/api/globals_0x66.html
new file mode 100644 (file)
index 0000000..53e5560
--- /dev/null
@@ -0,0 +1,65 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>lms_finish_slave()
+: <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>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x67.html b/www/api/globals_0x67.html
new file mode 100644 (file)
index 0000000..7625a09
--- /dev/null
@@ -0,0 +1,89 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>GNUC_CONST
+: <a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">lightmediascanner.h</a>
+<li>GNUC_MALLOC
+: <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__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__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
+: <a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">lightmediascanner.h</a>
+<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>
+<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>
+<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>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x69.html b/www/api/globals_0x69.html
new file mode 100644 (file)
index 0000000..f0e287c
--- /dev/null
@@ -0,0 +1,62 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>lms_is_processing()
+: <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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x6c.html b/www/api/globals_0x6c.html
new file mode 100644 (file)
index 0000000..8ca2fbd
--- /dev/null
@@ -0,0 +1,63 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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_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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x6e.html b/www/api/globals_0x6e.html
new file mode 100644 (file)
index 0000000..0efd164
--- /dev/null
@@ -0,0 +1,62 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>lms_new()
+: <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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x70.html b/www/api/globals_0x70.html
new file mode 100644 (file)
index 0000000..2f1c8e0
--- /dev/null
@@ -0,0 +1,105 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>lms_parser_add()
+: <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="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_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>
+<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>
+<li>lms_parsers_finish()
+: <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>
+<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>
+<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>
+<li>lms_plugin_finish_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lightmediascanner_plugin.h</a>
+<li>lms_plugin_match_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lightmediascanner_plugin.h</a>
+<li>lms_plugin_parse_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lightmediascanner_plugin.h</a>
+<li>lms_plugin_setup_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lightmediascanner_plugin.h</a>
+<li>lms_plugin_start_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">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>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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x72.html b/www/api/globals_0x72.html
new file mode 100644 (file)
index 0000000..8ea5a28
--- /dev/null
@@ -0,0 +1,62 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+<li>lms_restart_slave()
+: <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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x73.html b/www/api/globals_0x73.html
new file mode 100644 (file)
index 0000000..35208df
--- /dev/null
@@ -0,0 +1,72 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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_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_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>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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x74.html b/www/api/globals_0x74.html
new file mode 100644 (file)
index 0000000..acfd9ac
--- /dev/null
@@ -0,0 +1,61 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_0x77.html b/www/api/globals_0x77.html
new file mode 100644 (file)
index 0000000..759c98a
--- /dev/null
@@ -0,0 +1,62 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+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>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_defs.html b/www/api/globals_defs.html
new file mode 100644 (file)
index 0000000..e7f1b91
--- /dev/null
@@ -0,0 +1,121 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+&nbsp;
+<p>
+<h3><a class="anchor" name="index__">- _ -</a></h3><ul>
+<li>_DB_T_UPDATE
+: <a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">lightmediascanner_db_audio.c</a>
+<li>_GNU_SOURCE
+: <a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_check.c</a>
+, <a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">lightmediascanner_process.c</a>
+<li>_LIGHTMEDIASCANNER_CHARSET_CONV_H_
+: <a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">lightmediascanner_charset_conv.h</a>
+<li>_LIGHTMEDIASCANNER_DB_H_
+: <a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">lightmediascanner_db.h</a>
+<li>_LIGHTMEDIASCANNER_DB_PRIVATE_H_
+: <a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">lightmediascanner_db_private.h</a>
+<li>_LIGHTMEDIASCANNER_H_
+: <a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">lightmediascanner.h</a>
+<li>_LIGHTMEDIASCANNER_PLUGIN_H_
+: <a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">lightmediascanner_plugin.h</a>
+<li>_LIGHTMEDIASCANNER_PRIVATE_H_
+: <a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">lightmediascanner_private.h</a>
+<li>_LIGHTMEDIASCANNER_UTILS_H_
+: <a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">lightmediascanner_utils.h</a>
+</ul>
+<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
+<li>API
+: <a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner.h</a>
+, <a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">lightmediascanner_utils.h</a>
+, <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>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<li>COMM_FINFO_FLAG_OUTDATED
+: <a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">lightmediascanner_check.c</a>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<li>DEFAULT_COMMIT_INTERVAL
+: <a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">lightmediascanner.c</a>
+<li>DEFAULT_SLAVE_TIMEOUT
+: <a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">lightmediascanner.c</a>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<li>GNUC_CONST
+: <a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">lightmediascanner.h</a>
+<li>GNUC_MALLOC
+: <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__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
+: <a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">lightmediascanner.h</a>
+<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>
+</ul>
+<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_STATIC_STRING_SIZE
+: <a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">lightmediascanner_utils.h</a>
+</ul>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_func.html b/www/api/globals_func.html
new file mode 100644 (file)
index 0000000..e701162
--- /dev/null
@@ -0,0 +1,329 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+&nbsp;
+<p>
+<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
+<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>
+<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>
+<li>lms_charset_conv_add()
+: <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="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_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>
+<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_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>
+<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>
+<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>
+<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>
+</ul>
+<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
+<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>
+<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>
+<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>
+<li>lms_db_begin_transaction()
+: <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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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__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__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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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__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="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lightmediascanner_db_image.c</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>
+<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>
+<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>
+<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>
+<li>lms_db_playlist_add()
+: <a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lightmediascanner_db.h</a>
+, <a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lightmediascanner_db_playlist.c</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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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_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>
+<li>lms_db_video_new()
+: <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>
+</ul>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>lms_finish_slave()
+: <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>
+</ul>
+<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
+<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>
+<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>
+<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>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>lms_is_processing()
+: <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>
+<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
+<li>lms_new()
+: <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>
+<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
+<li>lms_parser_add()
+: <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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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_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>
+</ul>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>lms_restart_slave()
+: <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>
+<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_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_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>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>
+<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>
+</ul>
+<hr size="1"><address style="text-align: right;"><small>Generated on Thu Dec 13 02:04:05 2007 for Light Media Scanner by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_type.html b/www/api/globals_type.html
new file mode 100644 (file)
index 0000000..63bdbec
--- /dev/null
@@ -0,0 +1,65 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+</div>
+&nbsp;
+<p>
+<ul>
+<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#ge13e30aaedfabd6f1eec256649d9bc98">lightmediascanner_db.h</a>
+<li>lms_db_image_t
+: <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lightmediascanner_db.h</a>
+<li>lms_db_playlist_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_plugin_close_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#8ce53e0b14aa220d76d552882c1150a4">lightmediascanner_plugin.h</a>
+<li>lms_plugin_finish_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#b8b7e5fe20b1dcd0fe9ef4e9e5db9fe7">lightmediascanner_plugin.h</a>
+<li>lms_plugin_match_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#4374f28037e503b570592aed72a27c15">lightmediascanner_plugin.h</a>
+<li>lms_plugin_parse_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#cc0d2d6d376ca4abd084ad313b4d479c">lightmediascanner_plugin.h</a>
+<li>lms_plugin_setup_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#a8f0f1499d3cfb5fcd6d25928297f45e">lightmediascanner_plugin.h</a>
+<li>lms_plugin_start_fn_t
+: <a class="el" href="lightmediascanner__plugin_8h.html#d3b811bbff952ce44516c98119d91b30">lightmediascanner_plugin.h</a>
+<li>lms_plugin_t
+: <a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lightmediascanner.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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/globals_vars.html b/www/api/globals_vars.html
new file mode 100644 (file)
index 0000000..05ed305
--- /dev/null
@@ -0,0 +1,41 @@
+<!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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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>
+</div>
+&nbsp;
+<p>
+<ul>
+<li>lms_db_table_updater_t
+: <a class="el" href="lightmediascanner__db__private_8h.html#7964337689117d7dc6fb1822378b5848">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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/graph_legend.dot b/www/api/graph_legend.dot
new file mode 100644 (file)
index 0000000..ee8e8bc
--- /dev/null
@@ -0,0 +1,23 @@
+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"];
+}
diff --git a/www/api/graph_legend.html b/www/api/graph_legend.html
new file mode 100644 (file)
index 0000000..671a92e
--- /dev/null
@@ -0,0 +1,82 @@
+<!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: Graph Legend</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<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 { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+                  <span class="keyword">protected</span> ProtectedBase,
+                  <span class="keyword">private</span> PrivateBase,
+                  <span class="keyword">public</span> Undocumented,
+                  <span class="keyword">public</span> Templ&lt;int&gt;
+{
+  <span class="keyword">private</span>:
+    Used *m_usedClass;
+};
+</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/graph_legend.png b/www/api/graph_legend.png
new file mode 100644 (file)
index 0000000..0ef772a
Binary files /dev/null and b/www/api/graph_legend.png differ
diff --git a/www/api/group__LMS__API.html b/www/api/group__LMS__API.html
new file mode 100644 (file)
index 0000000..4c85d45
--- /dev/null
@@ -0,0 +1,563 @@
+<!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: User-API</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<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 class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</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> *&nbsp;</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>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</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>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a> (const <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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a> (const <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&nbsp;</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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Functions for library users. <hr><h2>Function Documentation</h2>
+<a class="anchor" name="g4fd56e209d415b27466274726cc7d59f"></a><!-- doxytag: member="lightmediascanner.c::lms_charset_add" ref="g4fd56e209d415b27466274726cc7d59f" args="(lms_t *lms, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a new charset encoding to be used.<p>
+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</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_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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g0b427b8b60957e29a0e504c10c5356b0"></a><!-- doxytag: member="lightmediascanner.c::lms_charset_del" ref="g0b427b8b60957e29a0e504c10c5356b0" args="(lms_t *lms, const char *charset)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forget about registered charset encoding.<p>
+All database text strings are in UTF-8, so one needs to register new encodings in order to convert to it.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</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_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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="gf15f3b0f7de2113155a360df989b7687"></a><!-- doxytag: member="lightmediascanner.c::lms_free" ref="gf15f3b0f7de2113155a360df989b7687" args="(lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free existing Light Media Scanner instance.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance.</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_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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g227ebe8cad9776908c1977c43ef62d9c"></a><!-- doxytag: member="lightmediascanner.c::lms_get_commit_interval" ref="g227ebe8cad9776908c1977c43ef62d9c" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int lms_get_commit_interval           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the number of files served between database transactions.<p>
+This is used as an optimization to database access: doing database commits take some time and can slow things down too much, so you can choose to just commit after some number of files are processed, this is the commit_interval.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+  </table>
+</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>.
+</div>
+</div><p>
+<a class="anchor" name="g4098d31de667a895095fc8d4d9bc10c0"></a><!-- doxytag: member="lightmediascanner.c::lms_get_db_path" ref="g4098d31de667a895095fc8d4d9bc10c0" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* lms_get_db_path           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the database path given at creation time.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</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>.
+</div>
+</div><p>
+<a class="anchor" name="g973c6c7b66f4fdd6f4f776a36e742d33"></a><!-- doxytag: member="lightmediascanner.c::lms_get_slave_timeout" ref="g973c6c7b66f4fdd6f4f776a36e742d33" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_get_slave_timeout           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get the maximum amount of milliseconds the slave can take to serve one file.<p>
+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</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>.
+</div>
+</div><p>
+<a class="anchor" name="g8c594bed751d504965b5cc0c7e93fb71"></a><!-- doxytag: member="lightmediascanner.c::lms_is_processing" ref="g8c594bed751d504965b5cc0c7e93fb71" args="(const lms_t *lms)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_is_processing           </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></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>
+<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>&nbsp;</td><td>previously allocated Light Media Scanner instance.</td></tr>
+  </table>
+</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>.
+</div>
+</div><p>
+<a class="anchor" name="g982939bdd2aeb664b5cf7a50b67c1030"></a><!-- doxytag: member="lightmediascanner.c::lms_new" ref="g982939bdd2aeb664b5cf7a50b67c1030" args="(const char *db_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms.html">lms_t</a>* lms_new           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>db_path</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create new Light Media Scanner instance.<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>db_path</em>&nbsp;</td><td>path to database file. </td></tr>
+  </table>
+</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>
+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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g7b93a24e73af8b5d46b2507dd70ac588"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_add" ref="g7b93a24e73af8b5d46b2507dd70ac588" args="(lms_t *lms, const char *so_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add <a class="el" href="structparser.html">parser</a> plugin given it's shared object path.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>so_path</em>&nbsp;</td><td>path to shared object (usable by dlopen(3)).</td></tr>
+  </table>
+</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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete previously added <a class="el" href="structparser.html">parser</a>, making it unavailable for future operations.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance.</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_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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g74b81422ff46a46b4b0fc44e8709ecee"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_find_and_add" ref="g74b81422ff46a46b4b0fc44e8709ecee" args="(lms_t *lms, const char *name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_find_and_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add <a class="el" href="structparser.html">parser</a> plugin given it's name.<p>
+This will look at default plugin path by the file named <code>name</code> (plus the required shared object extension).<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>plugin name.</td></tr>
+  </table>
+</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#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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="ge81a028f08139e64e97ac191bd899b32"></a><!-- doxytag: member="lightmediascanner.c::lms_set_commit_interval" ref="ge81a028f08139e64e97ac191bd899b32" args="(lms_t *lms, unsigned int transactions)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_set_commit_interval           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>transactions</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the number of files served between database transactions.<p>
+This is used as an optimization to database access: doing database commits take some time and can slow things down too much, so you can choose to just commit after <code>transactions</code> files are processed.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>transactions</em>&nbsp;</td><td>number of files (transactions) to process between commits. </td></tr>
+  </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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_set_slave_timeout           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>ms</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the maximum amount of milliseconds the slave can take to serve one file.<p>
+If a slave takes more than this amount of milliseconds, it will be killed and the scanner will continue with the next file.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>time in milliseconds. </td></tr>
+  </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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.map
new file mode 100644 (file)
index 0000000..134eff5
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4" title="lms_charset_conv_del" alt="" coords="164,5,303,32">
diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5 b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.md5
new file mode 100644 (file)
index 0000000..cf7a723
--- /dev/null
@@ -0,0 +1 @@
+741864e5ef35480d64dc8345e472b712
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png
new file mode 100644 (file)
index 0000000..5513671
Binary files /dev/null and b/www/api/group__LMS__API_g0b427b8b60957e29a0e504c10c5356b0_cgraph.png differ
diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.map b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.map
new file mode 100644 (file)
index 0000000..40497ff
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="159,5,281,32">
diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5 b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.md5
new file mode 100644 (file)
index 0000000..1259953
--- /dev/null
@@ -0,0 +1 @@
+ebac3ba08ff3018fd396ac6b1eaa0c0f
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png
new file mode 100644 (file)
index 0000000..5d939ac
Binary files /dev/null and b/www/api/group__LMS__API_g1da5e5f834e0289ea49a0fbc2280feda_cgraph.png differ
diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.map
new file mode 100644 (file)
index 0000000..b0ba168
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000" title="lms_charset_conv_add" alt="" coords="165,5,309,32">
diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5 b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.md5
new file mode 100644 (file)
index 0000000..b1ef7bf
--- /dev/null
@@ -0,0 +1 @@
+37edee99cb66d3d72d36c490a30bcf2e
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png
new file mode 100644 (file)
index 0000000..3d397b9
Binary files /dev/null and b/www/api/group__LMS__API_g4fd56e209d415b27466274726cc7d59f_cgraph.png differ
diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.map
new file mode 100644 (file)
index 0000000..7fe6153
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$group__LMS__API.html#g7b93a24e73af8b5d46b2507dd70ac588" title="lms_parser_add" alt="" coords="215,5,319,32">
diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5 b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.md5
new file mode 100644 (file)
index 0000000..13253d4
--- /dev/null
@@ -0,0 +1 @@
+ba12f4bd6c9bfde5afd2da8e3efd1c1b
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png
new file mode 100644 (file)
index 0000000..81d9b72
Binary files /dev/null and b/www/api/group__LMS__API_g74b81422ff46a46b4b0fc44e8709ecee_cgraph.png differ
diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.map
new file mode 100644 (file)
index 0000000..3ce52c7
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5 b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.md5
new file mode 100644 (file)
index 0000000..f211b3c
--- /dev/null
@@ -0,0 +1 @@
+8ca1d52d09150968d48d612cb14964f6
\ No newline at end of file
diff --git a/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png
new file mode 100644 (file)
index 0000000..98ce4bc
Binary files /dev/null and b/www/api/group__LMS__API_g982939bdd2aeb664b5cf7a50b67c1030_cgraph.png differ
diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.map b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.map
new file mode 100644 (file)
index 0000000..ec48efb
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091" title="lms_charset_conv_free" alt="" coords="124,5,268,32">
diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5 b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.md5
new file mode 100644 (file)
index 0000000..c8ca71a
--- /dev/null
@@ -0,0 +1 @@
+1c8005cea026be0e838fc5c01fe19dc0
\ No newline at end of file
diff --git a/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png
new file mode 100644 (file)
index 0000000..cffbc70
Binary files /dev/null and b/www/api/group__LMS__API_gf15f3b0f7de2113155a360df989b7687_cgraph.png differ
diff --git a/www/api/group__LMS__CHARSET.html b/www/api/group__LMS__CHARSET.html
new file mode 100644 (file)
index 0000000..61cf588
--- /dev/null
@@ -0,0 +1,245 @@
+<!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: Charset Conversion</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<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&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int&nbsp;</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 <br>
+int&nbsp;</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>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Utilities to convert strings to UTF-8, the charset used in database. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g50e57a19bb3d062fe7eea437a8b8e949"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_t" ref="g50e57a19bb3d062fe7eea437a8b8e949" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_charset_conv <a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="gd843f59abac208048f13437534d589fc"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv" ref="gd843f59abac208048f13437534d589fc" 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 lms_charset_conv           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="gfc1aad4c212b5fa1ce7280d2b7df3ef7"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_add" ref="gfc1aad4c212b5fa1ce7280d2b7df3ef7" args="(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_charset_conv_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</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" -->
+<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>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="gc364c502a4a4a64ea9f092a61074a90a"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_del" ref="gc364c502a4a4a64ea9f092a61074a90a" args="(lms_charset_conv_t *lcc, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int lms_charset_conv_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g960ce31bca428212abdd60c12b878091"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::lms_charset_conv_free" ref="g960ce31bca428212abdd60c12b878091" args="(lms_charset_conv_t *lcc) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_charset_conv_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free existing charset conversion tool.<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>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+  </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>.
+</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" -->
+<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           </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create a new charset conversion tool.<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#l00026">26</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#l00119">lms_new()</a>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__DB.html b/www/api/group__LMS__DB.html
new file mode 100644 (file)
index 0000000..c4f20f4
--- /dev/null
@@ -0,0 +1,727 @@
+<!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: DataBase-API</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html">lms_image_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html">lms_video_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Although Light Media Scanner uses SQLite3 and doesn't try to hide it from plugins/parsers, it does provide some utilities to make development easier and less error prone. <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ge13e30aaedfabd6f1eec256649d9bc98"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_t" ref="ge13e30aaedfabd6f1eec256649d9bc98" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_audio <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="gf09fb00e8cf6c7d5f76f257ecdea11a6"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_t" ref="gf09fb00e8cf6c7d5f76f257ecdea11a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_image <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="g9901260afad69e602336a4e567e386c3"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_t" ref="g9901260afad69e602336a4e567e386c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_playlist <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="gc2e0d2164f90e1ad3c78e05a4d341ec8"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_t" ref="gc2e0d2164f90e1ad3c78e05a4d341ec8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct lms_db_video <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g9b83f734ec4905778dec5494f39b7397"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_add" ref="g9b83f734ec4905778dec5494f39b7397" args="(lms_db_audio_t *lda, struct lms_audio_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g7560f9dab2ecd309290d200ea809375d"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_free" ref="g7560f9dab2ecd309290d200ea809375d" args="(lms_db_audio_t *lda) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free audio DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<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>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g09c4349148be1bdf02f069f8acb191ee"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_new" ref="g09c4349148be1bdf02f069f8acb191ee" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a>* lms_db_audio_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create audio DB access tool.<p>
+Creates or get a reference to tools to access 'audios' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<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>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</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#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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g39731623b0bc5436858820a94487fdc1"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_audio_start" ref="g39731623b0bc5436858820a94487fdc1" args="(lms_db_audio_t *lda) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_audio_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start audio DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<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>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="gbf78dd3b90caa31e8901369211501200"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_add" ref="gbf78dd3b90caa31e8901369211501200" args="(lms_db_image_t *ldi, struct lms_image_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g5160a3f620f1ebd562b6ec0add0f65a6"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_free" ref="g5160a3f620f1ebd562b6ec0add0f65a6" args="(lms_db_image_t *ldi) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free image DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<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>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g3eac8dbebc0a847b63702e531872e2e7"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_new" ref="g3eac8dbebc0a847b63702e531872e2e7" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a>* lms_db_image_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create image DB access tool.<p>
+Creates or get a reference to tools to access 'images' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<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>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</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#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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g66dc91038d76fa96d9feaaa119e2ae56"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_image_start" ref="g66dc91038d76fa96d9feaaa119e2ae56" args="(lms_db_image_t *ldi) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_image_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start image DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<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>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g8864e532609191f07737c1d23c1bc65f"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_add" ref="g8864e532609191f07737c1d23c1bc65f" args="(lms_db_playlist_t *ldp, struct lms_playlist_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ge0e003fb6c8deccf8c15a7cedb88c789"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_free" ref="ge0e003fb6c8deccf8c15a7cedb88c789" args="(lms_db_playlist_t *ldp) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free playlist DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<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>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g379e3bbb3f4a87b1d389df587dec0875"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_new" ref="g379e3bbb3f4a87b1d389df587dec0875" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a>* lms_db_playlist_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create playlist DB access tool.<p>
+Creates or get a reference to tools to access 'playlists' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<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>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</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#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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g9a0ba775eacd1abdc6bfd08c26bbd437"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_playlist_start" ref="g9a0ba775eacd1abdc6bfd08c26bbd437" args="(lms_db_playlist_t *ldp) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_playlist_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start playlist DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<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>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="gb07d1e7fe962486b6e9d00581e8aac19"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_add" ref="gb07d1e7fe962486b6e9d00581e8aac19" args="(lms_db_video_t *ldv, struct lms_video_info *info) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g6be7c0922e76acc29542643424cfeac0"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_free" ref="g6be7c0922e76acc29542643424cfeac0" args="(lms_db_video_t *ldv) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_free           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Free video DB access tool.<p>
+Unreference and possible free resources allocated to access tool.<p>
+This is usually called from plugin's <b>finish()</b> callback.<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>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>.</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__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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="ga206178e1f883c1bf7a3281f982109b2"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_new" ref="ga206178e1f883c1bf7a3281f982109b2" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a>* lms_db_video_new           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Create video DB access tool.<p>
+Creates or get a reference to tools to access 'videos' table in an optimized and easy way.<p>
+This is usually called from plugin's <b>setup()</b> callback with the <code>db</code> got from <code>ctxt</code>.<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>db</em>&nbsp;</td><td>database connection.</td></tr>
+  </table>
+</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#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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="g0ebc0dd37b1c9bcaf7741231a411ade2"></a><!-- doxytag: member="lightmediascanner_db.h::lms_db_video_start" ref="g0ebc0dd37b1c9bcaf7741231a411ade2" args="(lms_db_video_t *ldv) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int lms_db_video_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Start video DB access tool.<p>
+Compile SQL statements and other initialization functions.<p>
+This is usually called from plugin's <b>start()</b> callback.<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>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>.</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__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>
+<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>
+
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.map
new file mode 100644 (file)
index 0000000..59402f2
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5 b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.md5
new file mode 100644 (file)
index 0000000..e90694c
--- /dev/null
@@ -0,0 +1 @@
+eb02e47b6c3da31a0c666fdb72746f9c
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png
new file mode 100644 (file)
index 0000000..67851d3
Binary files /dev/null and b/www/api/group__LMS__DB_g09c4349148be1bdf02f069f8acb191ee_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.map
new file mode 100644 (file)
index 0000000..ed03201
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5 b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.md5
new file mode 100644 (file)
index 0000000..9de84ff
--- /dev/null
@@ -0,0 +1 @@
+075f37f351138796cb2745deda6fbe82
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png
new file mode 100644 (file)
index 0000000..d3bcc0f
Binary files /dev/null and b/www/api/group__LMS__DB_g0ebc0dd37b1c9bcaf7741231a411ade2_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.map
new file mode 100644 (file)
index 0000000..235482b
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5 b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.md5
new file mode 100644 (file)
index 0000000..bc848e7
--- /dev/null
@@ -0,0 +1 @@
+959c572e318a9c938cc52001b61635f9
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png
new file mode 100644 (file)
index 0000000..faebe0b
Binary files /dev/null and b/www/api/group__LMS__DB_g379e3bbb3f4a87b1d389df587dec0875_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.map
new file mode 100644 (file)
index 0000000..ed03201
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5 b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.md5
new file mode 100644 (file)
index 0000000..acc7761
--- /dev/null
@@ -0,0 +1 @@
+8d4f3544e83994d5316abfe3c1bcc1b1
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png
new file mode 100644 (file)
index 0000000..4cc557c
Binary files /dev/null and b/www/api/group__LMS__DB_g39731623b0bc5436858820a94487fdc1_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.map b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.map
new file mode 100644 (file)
index 0000000..c2e3648
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5 b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.md5
new file mode 100644 (file)
index 0000000..78a6860
--- /dev/null
@@ -0,0 +1 @@
+fbd6dc8be19d98f81704a2748ad68f34
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png
new file mode 100644 (file)
index 0000000..c9374dd
Binary files /dev/null and b/www/api/group__LMS__DB_g3eac8dbebc0a847b63702e531872e2e7_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.map
new file mode 100644 (file)
index 0000000..8623e5b
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5 b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.md5
new file mode 100644 (file)
index 0000000..4e438bb
--- /dev/null
@@ -0,0 +1 @@
+42ec26c4b56e9b61bc35de5035cbba4e
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png
new file mode 100644 (file)
index 0000000..ac9f66d
Binary files /dev/null and b/www/api/group__LMS__DB_g5160a3f620f1ebd562b6ec0add0f65a6_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.map b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.map
new file mode 100644 (file)
index 0000000..581a45c
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5 b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.md5
new file mode 100644 (file)
index 0000000..2b3ca44
--- /dev/null
@@ -0,0 +1 @@
+931cc66356963e2fccc1aeb2eb6ece33
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png
new file mode 100644 (file)
index 0000000..7f6855f
Binary files /dev/null and b/www/api/group__LMS__DB_g66dc91038d76fa96d9feaaa119e2ae56_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.map
new file mode 100644 (file)
index 0000000..b4cf9be
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5 b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.md5
new file mode 100644 (file)
index 0000000..63f4440
--- /dev/null
@@ -0,0 +1 @@
+1616d5ebff70eb7e63ec28d516875096
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png
new file mode 100644 (file)
index 0000000..68ebaec
Binary files /dev/null and b/www/api/group__LMS__DB_g6be7c0922e76acc29542643424cfeac0_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.map b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.map
new file mode 100644 (file)
index 0000000..b4cf9be
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5 b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.md5
new file mode 100644 (file)
index 0000000..38b2120
--- /dev/null
@@ -0,0 +1 @@
+b5fdb9b9d434a7563a080c2d0629345c
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png
new file mode 100644 (file)
index 0000000..a02be7f
Binary files /dev/null and b/www/api/group__LMS__DB_g7560f9dab2ecd309290d200ea809375d_cgraph.png differ
diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.map b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.map
new file mode 100644 (file)
index 0000000..04b24bb
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5 b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.md5
new file mode 100644 (file)
index 0000000..3db5c1e
--- /dev/null
@@ -0,0 +1 @@
+3c872c5d2fa1cff6fd9ea4cd7db6ea38
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png
new file mode 100644 (file)
index 0000000..e65c91d
Binary files /dev/null and b/www/api/group__LMS__DB_g9a0ba775eacd1abdc6bfd08c26bbd437_cgraph.png differ
diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.map
new file mode 100644 (file)
index 0000000..d9a8f15
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5 b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.md5
new file mode 100644 (file)
index 0000000..0a3fe3d
--- /dev/null
@@ -0,0 +1 @@
+eecaad120bf9f1954029b1660f5244b6
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png
new file mode 100644 (file)
index 0000000..db298f9
Binary files /dev/null and b/www/api/group__LMS__DB_ga206178e1f883c1bf7a3281f982109b2_cgraph.png differ
diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.map
new file mode 100644 (file)
index 0000000..18178a9
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5 b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.md5
new file mode 100644 (file)
index 0000000..fcf3e46
--- /dev/null
@@ -0,0 +1 @@
+90288409fec4c7c6eac1e45dab6d2d9f
\ No newline at end of file
diff --git a/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png
new file mode 100644 (file)
index 0000000..cee03b1
Binary files /dev/null and b/www/api/group__LMS__DB_ge0e003fb6c8deccf8c15a7cedb88c789_cgraph.png differ
diff --git a/www/api/group__LMS__Plugin.html b/www/api/group__LMS__Plugin.html
new file mode 100644 (file)
index 0000000..11da5a4
--- /dev/null
@@ -0,0 +1,62 @@
+<!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: Plugins-API</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<h1>Plugins-API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+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>;
+    };
+</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">void</span> *match(<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)
+</pre></div><p>
+Given the file 'path' of 'len' bytes, with base name starting at 'base' bytes offset inside 'path', return a match. Non-NULL values means it matched, and this return will be given to parse() function so any match-time analysis can be reused. This function will be used in the slave process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> parse(<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)
+</pre></div><p>
+Given the parsing context 'ctxt' (contains DB connection, charset conversion pointers and possible more), parse the file information 'finfo' using the previously matched data 'match'. This should return 0 on success or other value for errors. This will be used in the slave process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> close(<a class="code" href="structlms__plugin.html">lms_plugin_t</a> *p)
+</pre></div><p>
+Closes the plugin returned by lms_plugin_open(), this will run on the master process.<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> setup(<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>
+Prepare <a class="el" href="structparser.html">parser</a> to be executed. This is the first phase of plugin initialization on the slave process, it should create database tables and like, after this function is called, no database schema changes are allowed!<p>
+<div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> start(<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>
+This is the second phase of plugin initialization on the slave process. At this point, all database tables should exist and database schema will not be changed anymore, so one can use this phase to compile SQL statements for future use.<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/index.html b/www/api/index.html
new file mode 100644 (file)
index 0000000..710cb22
--- /dev/null
@@ -0,0 +1,49 @@
+<!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: Main Page</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.2 -->
+<div class="tabs">
+  <ul>
+    <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<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>
+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>
+<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The whole library follows libC standard of "0 (zero) means success", unless explicitly stated (usually boolean queries where no error is possible/interesting).</dd></dl>
+The first will walk all the files and children directories of top_path, check if files are handled by some <a class="el" href="structparser.html">parser</a> and if they're, they'll be parsed and registered in the data base.<p>
+The second will get all already registered media in data base that is located at top_path and see if they're still up to date, deleted or changed. If they were deleted, a flag is set on data base with current time, so it can be expired at some point. If they were marked as deleted, but are not present again, check if the state is still valid (mtime, size), so we can avoid re-parse of removable media. If the file was present and is still present, just check if its properties (mtime, size) are still the same, if not trigger re-parse.<p>
+Parsers are handled as shared object plugins, they can be added without modification to the core, see the plugins API later in this document. Since the core have no control over plugins, they can register data as they want, but since some utilities are provided, we expect that the given data base tables are used:<p>
+<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><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>id: identification inside LMS/DB.</li><li>artist_id: same as audio_artists.id.</li><li>name: album name.</li></ul>
+</li><li><b>audio_genres:</b> audio genres.<ul>
+<li>id: identification inside LMS/DB.</li><li>name: genre name.</li></ul>
+</li><li><b>playlists:</b> playlists.<ul>
+<li>id: identification inside LMS/DB.</li><li>title: playlists title.</li><li>n_entries: number of entries in this playlist.</li></ul>
+</li><li><b>images:</b> image files.<ul>
+<li>id: identification inside LMS/DB.</li><li>title: image title.</li><li>artist: image creator or artirst or photographer or ...</li><li>date: image taken date or creation date or ...</li><li>width: image width.</li><li>height: image height.</li><li>orientation: image orientation.</li><li>gps_lat: GPS latitude.</li><li>gps_long: GPS longitude.</li><li>gps_alt: GPS altitude.</li></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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c-source.html b/www/api/lightmediascanner_8c-source.html
new file mode 100644 (file)
index 0000000..abca650
--- /dev/null
@@ -0,0 +1,360 @@
+<!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: src/lib/lightmediascanner.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;dlfcn.h&gt;</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00033"></a>00033 
+<a name="l00034"></a><a class="code" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">00034</a> <span class="preprocessor">#define DEFAULT_SLAVE_TIMEOUT 1000</span>
+<a name="l00035"></a><a class="code" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define DEFAULT_COMMIT_INTERVAL 100</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>
+<a name="l00037"></a>00037 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00038"></a>00038 _parser_load(<span class="keyword">struct</span> <a class="code" href="structparser.html">parser</a> *p, <span class="keyword">const</span> <span class="keywordtype">char</span> *so_path)
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040     <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *(*plugin_open)(void);
+<a name="l00041"></a>00041     <span class="keywordtype">char</span> *errmsg;
+<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-&gt;dl_handle = 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-&gt;dl_handle, <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="l00056"></a>00056                 errmsg);
+<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-&gt;so_path = strdup(so_path);
+<a name="l00061"></a>00061     <span class="keywordflow">if</span> (!p-&gt;so_path) {
+<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-&gt;plugin = plugin_open();
+<a name="l00067"></a>00067     <span class="keywordflow">if</span> (!p-&gt;plugin) {
+<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="l00071"></a>00071 
+<a name="l00072"></a>00072     <span class="keywordflow">return</span> 0;
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00076"></a>00076 _parser_unload(<span class="keyword">struct</span> <a class="code" href="structparser.html">parser</a> *p)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078     <span class="keywordtype">int</span> r;
+<a name="l00079"></a>00079 
+<a name="l00080"></a>00080     r = 0;
+<a name="l00081"></a>00081     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) {
+<a name="l00082"></a>00082         <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>-&gt;<a class="code" href="structlms__plugin.html#4921b3b79c7ecdddbe9f1a7c9f5019c7">close</a>(p-&gt;<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>) != 0) {
+<a name="l00083"></a>00083             fprintf(stderr, <span class="stringliteral">"ERROR: plugin \"%s\" failed to deinit.\n"</span>,
+<a name="l00084"></a>00084                     p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00085"></a>00085             r -= 1;
+<a name="l00086"></a>00086         }
+<a name="l00087"></a>00087     }
+<a name="l00088"></a>00088 
+<a name="l00089"></a>00089     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>) {
+<a name="l00090"></a>00090         <span class="keywordtype">char</span> *errmsg;
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092         dlclose(p-&gt;<a class="code" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a>);
+<a name="l00093"></a>00093         errmsg = dlerror();
+<a name="l00094"></a>00094         <span class="keywordflow">if</span> (errmsg) {
+<a name="l00095"></a>00095             fprintf(stderr, <span class="stringliteral">"ERROR: could not dlclose() plugin \"%s\": %s\n"</span>,
+<a name="l00096"></a>00096                     errmsg, p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00097"></a>00097             r -= 1;
+<a name="l00098"></a>00098         }
+<a name="l00099"></a>00099     }
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101     <span class="keywordflow">if</span> (p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>)
+<a name="l00102"></a>00102         free(p-&gt;<a class="code" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</a>);
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104     <span class="keywordflow">return</span> r;
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107 
+<a name="l00108"></a>00108 <span class="comment">/***********************************************************************</span>
+<a name="l00109"></a>00109 <span class="comment"> * Public API.</span>
+<a name="l00110"></a>00110 <span class="comment"> ***********************************************************************/</span>
+<a name="l00118"></a>00118 <a class="code" href="structlms.html">lms_t</a> *
+<a name="l00119"></a><a class="code" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">00119</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 name="l00120"></a>00120 {
+<a name="l00121"></a>00121     <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>;
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123     lms = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="structlms.html">lms_t</a>));
+<a name="l00124"></a>00124     <span class="keywordflow">if</span> (!lms) {
+<a name="l00125"></a>00125         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00126"></a>00126         <span class="keywordflow">return</span> NULL;
+<a name="l00127"></a>00127     }
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129     lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a> = <a class="code" href="group__LMS__CHARSET.html#g0120c222a55e6d7d9bb24300300561ab">lms_charset_conv_new</a>();
+<a name="l00130"></a>00130     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>) {
+<a name="l00131"></a>00131         free(lms);
+<a name="l00132"></a>00132         <span class="keywordflow">return</span> NULL;
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135     lms-&gt;<a class="code" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">commit_interval</a> = <a class="code" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">DEFAULT_COMMIT_INTERVAL</a>;
+<a name="l00136"></a>00136     lms-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a> = <a class="code" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">DEFAULT_SLAVE_TIMEOUT</a>;
+<a name="l00137"></a>00137     lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a> = strdup(db_path);
+<a name="l00138"></a>00138     <span class="keywordflow">if</span> (!lms-&gt;<a class="code" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a>) {
+<a name="l00139"></a>00139         perror(<span class="stringliteral">"strdup"</span>);
+<a name="l00140"></a>00140         <a class="code" href="group__LMS__CHARSET.html#g960ce31bca428212abdd60c12b878091">lms_charset_conv_free</a>(lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>);
+<a name="l00141"></a>00141         free(lms);
+<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> lms;
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147 
+<a name="l00156"></a>00156 <span class="keywordtype">int</span>
+<a name="l00157"></a><a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">00157</a> <a class="code" href="group__LMS__API.html#gf15f3b0f7de2113155a360df989b7687">lms_free</a>(<a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>)
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159     <span class="keywordtype">int</span> i;
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161     <span class="keywordflow">if</span> (!lms)
+<a name="l00162"></a>00162         <span class="keywordflow">return</span> 0;
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a>)
+<a name="l00165"></a>00165         <span class="keywordflow">return</span> -1;
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     <span class="keywordflow">if</span> (lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00168"></a>00168         <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
+<a name="l00169"></a>00169             _parser_unload(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i);
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171         free(lms-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00206"></a>00206                            (lms-&gt;<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-&gt;<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-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + lms-&gt;<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-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>++;
+<a name="l00219"></a>00219     <span class="keywordflow">return</span> parser-&gt;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-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> + i;
+<a name="l00254"></a>00254     _parser_unload(parser);
+<a name="l00255"></a>00255     lms-&gt;<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-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> == 0) {
+<a name="l00258"></a>00258         free(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>);
+<a name="l00259"></a>00259         lms-&gt;<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-&gt;<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-&gt;<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-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a> = realloc(lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>,
+<a name="l00270"></a>00270                                lms-&gt;<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-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>) {
+<a name="l00272"></a>00272             lms-&gt;<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="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-&gt;<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-&gt;<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 &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++)
+<a name="l00305"></a>00305         <span class="keywordflow">if</span> (lms-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c.html b/www/api/lightmediascanner_8c.html
new file mode 100644 (file)
index 0000000..1faf301
--- /dev/null
@@ -0,0 +1,157 @@
+<!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: src/lib/lightmediascanner.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner.c File Reference</h1><code>#include &lt;dlfcn.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#c2843894cca63ec0089c381e69d1d81a">DEFAULT_SLAVE_TIMEOUT</a>&nbsp;&nbsp;&nbsp;1000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#6d0480dc76aba4a2291d79ac2466fc59">DEFAULT_COMMIT_INTERVAL</a>&nbsp;&nbsp;&nbsp;100</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="structlms.html">lms_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g982939bdd2aeb664b5cf7a50b67c1030">lms_new</a> (const char *db_path)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</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> *&nbsp;</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>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf">lms_parser_del_int</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int i)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g1da5e5f834e0289ea49a0fbc2280feda">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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</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>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</a> (const <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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</a> (const <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&nbsp;</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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g4fd56e209d415b27466274726cc7d59f">lms_charset_add</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g0b427b8b60957e29a0e504c10c5356b0">lms_charset_del</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, const char *charset)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="6d0480dc76aba4a2291d79ac2466fc59"></a><!-- doxytag: member="lightmediascanner.c::DEFAULT_COMMIT_INTERVAL" ref="6d0480dc76aba4a2291d79ac2466fc59" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEFAULT_COMMIT_INTERVAL&nbsp;&nbsp;&nbsp;100          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="c2843894cca63ec0089c381e69d1d81a"></a><!-- doxytag: member="lightmediascanner.c::DEFAULT_SLAVE_TIMEOUT" ref="c2843894cca63ec0089c381e69d1d81a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEFAULT_SLAVE_TIMEOUT&nbsp;&nbsp;&nbsp;1000          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="e6ccb942742cf65cc1cf866aceb4bddf"></a><!-- doxytag: member="lightmediascanner.c::lms_parser_del_int" ref="e6ccb942742cf65cc1cf866aceb4bddf" args="(lms_t *lms, int i)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del_int           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8c__incl.map b/www/api/lightmediascanner_8c__incl.map
new file mode 100644 (file)
index 0000000..1c7fa6c
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner_8c__incl.md5 b/www/api/lightmediascanner_8c__incl.md5
new file mode 100644 (file)
index 0000000..cae4d00
--- /dev/null
@@ -0,0 +1 @@
+941e05618dc03c9ae93749b201be85d7
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8c__incl.png b/www/api/lightmediascanner_8c__incl.png
new file mode 100644 (file)
index 0000000..cb689cb
Binary files /dev/null and b/www/api/lightmediascanner_8c__incl.png differ
diff --git a/www/api/lightmediascanner_8h-source.html b/www/api/lightmediascanner_8h-source.html
new file mode 100644 (file)
index 0000000..a265c54
--- /dev/null
@@ -0,0 +1,101 @@
+<!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: src/lib/lightmediascanner.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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__ &gt;= 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__ &gt; 2 || (__GNUC__ == 2 &amp;&amp; __GNUC_MINOR__ &gt;= 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__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8h.html b/www/api/lightmediascanner_8h.html
new file mode 100644 (file)
index 0000000..b2a382e
--- /dev/null
@@ -0,0 +1,493 @@
+<!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: src/lib/lightmediascanner.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#e97a674be7c85b0914a6acbafe994998">_LIGHTMEDIASCANNER_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#3c631eb7d32b61d70bfc615ae54e5552">GNUC_NULL_TERMINATED</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#7a9a21d60c8e567c8110c8e3069f8201">GNUC_PURE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccce66c7f9844ae805b83bee1b9c32b5">GNUC_CONST</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#80a4050221a914ea58d5799f13109ebb">GNUC_UNUSED</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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>&nbsp;</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 <a class="el" href="structlms__plugin.html">lms_plugin</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner_8h.html#ccedd0cd6d535dcfee399957033074fd">lms_plugin_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="structlms.html">lms_t</a> *&nbsp;</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&nbsp;</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>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</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&nbsp;</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 API const <br>
+char *&nbsp;</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&nbsp;</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 int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g973c6c7b66f4fdd6f4f776a36e742d33">lms_get_slave_timeout</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 void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g68ac6273965bdeb25795dd4c50777b4e">lms_set_slave_timeout</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, int ms) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__API.html#g227ebe8cad9776908c1977c43ef62d9c">lms_get_commit_interval</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 void&nbsp;</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 <a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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>
+<a class="anchor" name="e97a674be7c85b0914a6acbafe994998"></a><!-- doxytag: member="lightmediascanner.h::_LIGHTMEDIASCANNER_H_" ref="e97a674be7c85b0914a6acbafe994998" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="ccce66c7f9844ae805b83bee1b9c32b5"></a><!-- doxytag: member="lightmediascanner.h::GNUC_CONST" ref="ccce66c7f9844ae805b83bee1b9c32b5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_CONST          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_MALLOC          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="3c631eb7d32b61d70bfc615ae54e5552"></a><!-- doxytag: member="lightmediascanner.h::GNUC_NULL_TERMINATED" ref="3c631eb7d32b61d70bfc615ae54e5552" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NULL_TERMINATED          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="7a9a21d60c8e567c8110c8e3069f8201"></a><!-- doxytag: member="lightmediascanner.h::GNUC_PURE" ref="7a9a21d60c8e567c8110c8e3069f8201" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_PURE          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="80a4050221a914ea58d5799f13109ebb"></a><!-- doxytag: member="lightmediascanner.h::GNUC_UNUSED" ref="80a4050221a914ea58d5799f13109ebb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_UNUSED          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_WARN_UNUSED_RESULT          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ccedd0cd6d535dcfee399957033074fd"></a><!-- doxytag: member="lightmediascanner.h::lms_plugin_t" ref="ccedd0cd6d535dcfee399957033074fd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structlms__plugin.html">lms_plugin</a> <a class="el" href="structlms__plugin.html">lms_plugin_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="d118599605b4e66ca5f91376982b8a64"></a><!-- doxytag: member="lightmediascanner.h::lms_t" ref="d118599605b4e66ca5f91376982b8a64" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structlms.html">lms</a> <a class="el" href="structlms.html">lms_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="03afcd1e04665bdaebe73d9f6cc20553"></a><!-- doxytag: member="lightmediascanner.h::lms_charset_add" ref="03afcd1e04665bdaebe73d9f6cc20553" args="(lms_t *lms, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int API int lms_charset_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="35fc2de4828878b9dec07e8edda8a5e2"></a><!-- doxytag: member="lightmediascanner.h::lms_charset_del" ref="35fc2de4828878b9dec07e8edda8a5e2" args="(lms_t *lms, const char *charset) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int API int API int lms_charset_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API int API int lms_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ce55a5c9cc767b96fa6f24b77bebc7c3"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_add" ref="ce55a5c9cc767b96fa6f24b77bebc7c3" args="(lms_t *lms, const char *so_path) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>so_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="5ba173b12c355bbdf7913bfff0ff6415"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_del" ref="5ba173b12c355bbdf7913bfff0ff6415" args="(lms_t *lms, lms_plugin_t *handle) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API int lms_parser_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structlms__plugin.html">lms_plugin_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e48d0483903bbb9604d14b44f7c569d9"></a><!-- doxytag: member="lightmediascanner.h::lms_parser_find_and_add" ref="e48d0483903bbb9604d14b44f7c569d9" args="(lms_t *lms, const char *name) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* API <a class="el" href="structlms__plugin.html">lms_plugin_t</a>* lms_parser_find_and_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="7d2b81cfe07a8cce4c2bef705e7529f4"></a><!-- doxytag: member="lightmediascanner.h::lms_process" ref="7d2b81cfe07a8cce4c2bef705e7529f4" 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 lms_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner_8h__dep__incl.map b/www/api/lightmediascanner_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..756e0e2
--- /dev/null
@@ -0,0 +1,12 @@
+<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">
diff --git a/www/api/lightmediascanner_8h__dep__incl.md5 b/www/api/lightmediascanner_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..9573517
--- /dev/null
@@ -0,0 +1 @@
+3896306936d5e31832c584767f4ea72b
\ No newline at end of file
diff --git a/www/api/lightmediascanner_8h__dep__incl.png b/www/api/lightmediascanner_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..7d4ac43
Binary files /dev/null and b/www/api/lightmediascanner_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__charset__conv_8c-source.html b/www/api/lightmediascanner__charset__conv_8c-source.html
new file mode 100644 (file)
index 0000000..ccf239c
--- /dev/null
@@ -0,0 +1,315 @@
+<!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: src/lib/lightmediascanner_charset_conv.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;iconv.h&gt;</span>
+<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;errno.h&gt;</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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;size = 0;
+<a name="l00049"></a>00049     lcc-&gt;convs = NULL;
+<a name="l00050"></a>00050     lcc-&gt;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-&gt;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-&gt;check);
+<a name="l00075"></a>00075     iconv_close(lcc-&gt;fallback);
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077     <span class="keywordflow">for</span> (i = 0; i &lt; lcc-&gt;size; i++) {
+<a name="l00078"></a>00078         iconv_close(lcc-&gt;convs[i]);
+<a name="l00079"></a>00079         free(lcc-&gt;names[i]);
+<a name="l00080"></a>00080     }
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082     <span class="keywordflow">if</span> (lcc-&gt;convs)
+<a name="l00083"></a>00083         free(lcc-&gt;convs);
+<a name="l00084"></a>00084     if (lcc-&gt;names)
+<a name="l00085"></a>00085         free(lcc-&gt;names);
+<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-&gt;size;
+<a name="l00118"></a>00118     ns = lcc-&gt;size + 1;
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120     convs = realloc(lcc-&gt;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-&gt;convs = convs;
+<a name="l00124"></a>00124     lcc-&gt;convs[idx] = cd;
+<a name="l00125"></a>00125 
+<a name="l00126"></a>00126     names = realloc(lcc-&gt;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-&gt;names = names;
+<a name="l00130"></a>00130     lcc-&gt;names[idx] = strdup(charset);
+<a name="l00131"></a>00131     <span class="keywordflow">if</span> (!lcc-&gt;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-&gt;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 &lt; lcc-&gt;size; i++)
+<a name="l00149"></a>00149         <span class="keywordflow">if</span> (strcmp(lcc-&gt;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="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 &lt; 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-&gt;convs[idx]);
+<a name="l00183"></a>00183     free(lcc-&gt;names[idx]);
+<a name="l00184"></a>00184 
+<a name="l00185"></a>00185     lcc-&gt;size--;
+<a name="l00186"></a>00186     <span class="keywordflow">for</span> (; idx &lt; lcc-&gt;size; idx++) {
+<a name="l00187"></a>00187         lcc-&gt;convs[idx] = lcc-&gt;convs[idx + 1];
+<a name="l00188"></a>00188         lcc-&gt;names[idx] = lcc-&gt;names[idx + 1];
+<a name="l00189"></a>00189     }
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191     convs = realloc(lcc-&gt;convs, lcc-&gt;size * <span class="keyword">sizeof</span>(*convs));
+<a name="l00192"></a>00192     <span class="keywordflow">if</span> (convs)
+<a name="l00193"></a>00193         lcc-&gt;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-&gt;names, lcc-&gt;size * <span class="keyword">sizeof</span>(*names));
+<a name="l00198"></a>00198     <span class="keywordflow">if</span> (names)
+<a name="l00199"></a>00199         lcc-&gt;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="l00216"></a>00216 
+<a name="l00217"></a>00217     iconv(lcc-&gt;check, NULL, NULL, NULL, NULL);
+<a name="l00218"></a>00218     r = iconv(lcc-&gt;check, &amp;inbuf, &amp;inlen, &amp;outbuf, &amp;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, &amp;inbuf, &amp;inlen, &amp;outbuf, &amp;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="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 &lt; lcc-&gt;size; i++)
+<a name="l00293"></a>00293         <span class="keywordflow">if</span> (_conv(lcc-&gt;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-&gt;fallback, p_str, p_len, outstr, outlen);
+<a name="l00300"></a>00300     <span class="keywordflow">if</span> (i &lt; 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8c.html b/www/api/lightmediascanner__charset__conv_8c.html
new file mode 100644 (file)
index 0000000..6fae642
--- /dev/null
@@ -0,0 +1,230 @@
+<!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: src/lib/lightmediascanner_charset_conv.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_charset_conv.c File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&quot;</code><br>
+<code>#include &lt;iconv.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &lt;errno.h&gt;</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>
+<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>
+
+<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> *&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#0a3006beae6fc8c59eca75468c1bc000">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8c.html#ad60dd3a2c2ebcf9ee1100986fc572e4">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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&nbsp;</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>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="35b728d3c5cb940027ebc47589971b25"></a><!-- doxytag: member="lightmediascanner_charset_conv.c::lms_charset_conv" ref="35b728d3c5cb940027ebc47589971b25" 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           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char **&nbsp;</td>
+          <td class="paramname"> <em>p_str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+If required, 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>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_str</em>&nbsp;</td><td>string to be converted. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string size.</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__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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register new charset to conversion tool.<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>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name as understood by iconv_open(3).</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__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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">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> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check if strings is not UTF-8 and conversion is required.<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>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>string to be analysed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>string size.</td></tr>
+  </table>
+</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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_charset_conv_del           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lcc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>charset</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Forget about previously registered charset in conversion tool.<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>&nbsp;</td><td>existing Light Media Scanner charset conversion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>charset</em>&nbsp;</td><td>charset name.</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__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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.map b/www/api/lightmediascanner__charset__conv_8c__incl.map
new file mode 100644 (file)
index 0000000..85b1a85
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__charset__conv_8h.html" title="lightmediascanner_charset_conv.h" alt="" coords="297,5,503,32">
diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.md5 b/www/api/lightmediascanner__charset__conv_8c__incl.md5
new file mode 100644 (file)
index 0000000..ab00d3e
--- /dev/null
@@ -0,0 +1 @@
+a9fb93c4b14d546e8218fa70f21420bb
\ No newline at end of file
diff --git a/www/api/lightmediascanner__charset__conv_8c__incl.png b/www/api/lightmediascanner__charset__conv_8c__incl.png
new file mode 100644 (file)
index 0000000..fdfc10c
Binary files /dev/null and b/www/api/lightmediascanner__charset__conv_8c__incl.png differ
diff --git a/www/api/lightmediascanner__charset__conv_8h-source.html b/www/api/lightmediascanner__charset__conv_8h-source.html
new file mode 100644 (file)
index 0000000..f31eccd
--- /dev/null
@@ -0,0 +1,86 @@
+<!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: src/lib/lightmediascanner_charset_conv.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef GNUC_MALLOC</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_MALLOC</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#ifdef GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#ifdef GNUC_NON_NULL</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#undef GNUC_NON_NULL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#ifdef API</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 2 || (__GNUC__ == 2 &amp;&amp; __GNUC_MINOR__ &gt;= 96)</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC __attribute__((__malloc__))</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00049"></a>00049 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00056"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">00056</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_MALLOC</span>
+<a name="l00057"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">00057</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_WARN_UNUSED_RESULT</span>
+<a name="l00058"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">00058</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00059"></a><a class="code" href="lightmediascanner__charset__conv_8h.html#d8ce4efaa307683d3d763b37b4711c53">00059</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00061"></a>00061 <span class="preprocessor"></span>
+<a name="l00062"></a>00062 <span class="preprocessor">#ifdef __cplusplus</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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8h.html b/www/api/lightmediascanner__charset__conv_8h.html
new file mode 100644 (file)
index 0000000..7fa6cd5
--- /dev/null
@@ -0,0 +1,160 @@
+<!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: src/lib/lightmediascanner_charset_conv.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#79f872f99949ecde4c1661e4b78b4c2b">_LIGHTMEDIASCANNER_CHARSET_CONV_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#2213ea4dca0e242f957f63988caab768">GNUC_MALLOC</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#34c563f40a0f86e597c51f1556669521">GNUC_WARN_UNUSED_RESULT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__charset__conv_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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&nbsp;</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> *&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gfc1aad4c212b5fa1ce7280d2b7df3ef7">lms_charset_conv_add</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__CHARSET.html#gc364c502a4a4a64ea9f092a61074a90a">lms_charset_conv_del</a> (<a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *lcc, const char *charset) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int API int API int&nbsp;</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 <br>
+int&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="79f872f99949ecde4c1661e4b78b4c2b"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::_LIGHTMEDIASCANNER_CHARSET_CONV_H_" ref="79f872f99949ecde4c1661e4b78b4c2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_CHARSET_CONV_H_&nbsp;&nbsp;&nbsp;1          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="2213ea4dca0e242f957f63988caab768"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_MALLOC" ref="2213ea4dca0e242f957f63988caab768" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_MALLOC          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="34c563f40a0f86e597c51f1556669521"></a><!-- doxytag: member="lightmediascanner_charset_conv.h::GNUC_WARN_UNUSED_RESULT" ref="34c563f40a0f86e597c51f1556669521" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_WARN_UNUSED_RESULT          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.map b/www/api/lightmediascanner__charset__conv_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..36a45c5
--- /dev/null
@@ -0,0 +1,13 @@
+<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">
diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.md5 b/www/api/lightmediascanner__charset__conv_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..42dc467
--- /dev/null
@@ -0,0 +1 @@
+aa3d888691589f3b2f80ad8c0ab8be67
\ No newline at end of file
diff --git a/www/api/lightmediascanner__charset__conv_8h__dep__incl.png b/www/api/lightmediascanner__charset__conv_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..182317f
Binary files /dev/null and b/www/api/lightmediascanner__charset__conv_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__check_8c-source.html b/www/api/lightmediascanner__check_8c-source.html
new file mode 100644 (file)
index 0000000..4d8df4f
--- /dev/null
@@ -0,0 +1,662 @@
+<!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: src/lib/lightmediascanner_check.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a><a class="code" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">00025</a> <span class="preprocessor">#define _GNU_SOURCE</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/wait.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;dirent.h&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;signal.h&gt;</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;time.h&gt;</span>
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="keyword">struct </span>master_db {
+<a name="l00042"></a>00042     sqlite3 *handle;
+<a name="l00043"></a>00043     sqlite3_stmt *get_files;
+<a name="l00044"></a>00044 };
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keyword">struct </span>slave_db {
+<a name="l00047"></a>00047     sqlite3 *handle;
+<a name="l00048"></a>00048     sqlite3_stmt *transaction_begin;
+<a name="l00049"></a>00049     sqlite3_stmt *transaction_commit;
+<a name="l00050"></a>00050     sqlite3_stmt *delete_file_info;
+<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="l00082"></a>00082 
+<a name="l00083"></a>00083     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;ci, <span class="keyword">sizeof</span>(ci)) &lt; 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-&gt;<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>) &lt; 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="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="l00100"></a>00100 
+<a name="l00101"></a>00101     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;ci, <span class="keyword">sizeof</span>(ci)) &lt; 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="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="l00113"></a>00113 
+<a name="l00114"></a>00114     r = poll(pfd, 1, timeout);
+<a name="l00115"></a>00115     <span class="keywordflow">if</span> (r &lt; 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-&gt;<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="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="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-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;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-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, &amp;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-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = ci.path_len;
+<a name="l00155"></a>00155     finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = ci.base;
+<a name="l00156"></a>00156     finfo-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = ci.id;
+<a name="l00157"></a>00157     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = ci.mtime;
+<a name="l00158"></a>00158     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = ci.dtime;
+<a name="l00159"></a>00159     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = ci.size;
+<a name="l00160"></a>00160     finfo-&gt;<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 &gt; <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-&gt;<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-&gt;<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-&gt;handle;
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196     db-&gt;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-&gt;transaction_begin)
+<a name="l00198"></a>00198         <span class="keywordflow">return</span> -1;
+<a name="l00199"></a>00199 
+<a name="l00200"></a>00200     db-&gt;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-&gt;transaction_commit)
+<a name="l00202"></a>00202         <span class="keywordflow">return</span> -2;
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     db-&gt;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-&gt;delete_file_info)
+<a name="l00206"></a>00206         <span class="keywordflow">return</span> -3;
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     db-&gt;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-&gt;update_file_info)
+<a name="l00210"></a>00210         <span class="keywordflow">return</span> -4;
+<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="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, &amp;db-&gt;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-&gt;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="l00233"></a>00233 
+<a name="l00234"></a>00234   error:
+<a name="l00235"></a>00235     sqlite3_close(db-&gt;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="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-&gt;transaction_begin)
+<a name="l00244"></a>00244         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246     <span class="keywordflow">if</span> (db-&gt;transaction_commit)
+<a name="l00247"></a>00247         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249     <span class="keywordflow">if</span> (db-&gt;delete_file_info)
+<a name="l00250"></a>00250         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;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-&gt;update_file_info)
+<a name="l00253"></a>00253         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;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-&gt;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-&gt;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-&gt;<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-&gt;transaction_begin);
+<a name="l00289"></a>00289 
+<a name="l00290"></a>00290     <span class="keywordflow">while</span> (((r = _slave_recv_file(fds, &amp;finfo, &amp;flags)) == 0) &amp;&amp;
+<a name="l00291"></a>00291            finfo.<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> &gt; 0) {
+<a name="l00292"></a>00292         r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db-&gt;update_file_info, &amp;finfo);
+<a name="l00293"></a>00293         <span class="keywordflow">if</span> (r &lt; 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 &amp; <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, &amp;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-&gt;handle, parser_match, &amp;finfo);
+<a name="l00303"></a>00303                 <span class="keywordflow">if</span> (r &lt; 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-&gt;delete_file_info, &amp;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 &gt; lms-&gt;<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-&gt;transaction_commit);
+<a name="l00315"></a>00315             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00316"></a>00316             counter = 0;
+<a name="l00317"></a>00317         }
+<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-&gt;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="l00331"></a>00331 
+<a name="l00332"></a>00332     db = _slave_db_open(lms-&gt;<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-&gt;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-&gt;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-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> &lt; 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-&gt;handle);
+<a name="l00363"></a>00363     _slave_db_close(db);
+<a name="l00364"></a>00364     _init_sync_send(fds);
+<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-&gt;handle;
+<a name="l00380"></a>00380 
+<a name="l00381"></a>00381     db-&gt;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-&gt;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="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="l00398"></a>00398 
+<a name="l00399"></a>00399     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;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-&gt;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-&gt;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-&gt;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-&gt;get_files)
+<a name="l00427"></a>00427         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;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-&gt;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-&gt;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-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> - 1; i &gt;= 0; i--)
+<a name="l00445"></a>00445         <span class="keywordflow">if</span> (finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>[i] == <span class="charliteral">'/'</span>) {
+<a name="l00446"></a>00446             finfo-&gt;<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-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00455"></a>00455     finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a> = sqlite3_column_blob(stmt, 1);
+<a name="l00456"></a>00456     finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a> = sqlite3_column_bytes(stmt, 1);
+<a name="l00457"></a>00457     finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a> = 0;
+<a name="l00458"></a>00458     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00459"></a>00459     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 3);
+<a name="l00460"></a>00460     finfo-&gt;<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-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st-&gt;st_mtime;
+<a name="l00467"></a>00467     finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st-&gt;st_size;
+<a name="l00468"></a>00468     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = 0;
+<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(&amp;finfo, db-&gt;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>, &amp;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> &amp;&amp; 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(&amp;finfo, &amp;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(&amp;finfo);
+<a name="l00500"></a>00500 
+<a name="l00501"></a>00501     <span class="keywordflow">if</span> (_master_send_file(&amp;pinfo-&gt;<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(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00505"></a>00505                            pinfo-&gt;<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00506"></a>00506     <span class="keywordflow">if</span> (r &lt; 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-&gt;<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 &lt; 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) &lt;&lt; 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="l00529"></a>00529 
+<a name="l00530"></a>00530     <span class="keywordflow">do</span> {
+<a name="l00531"></a>00531         r = _master_recv_reply(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00532"></a>00532                                pinfo-&gt;<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00533"></a>00533         <span class="keywordflow">if</span> (r &lt; 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 &amp;&amp; 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-&gt;<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 &amp;&amp; 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="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="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-&gt;<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<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-&gt;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-&gt;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) &lt; 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-&gt;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="l00592"></a>00592 
+<a name="l00593"></a>00593   finish_slave:
+<a name="l00594"></a>00594     _master_send_finish(&amp;pinfo-&gt;<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-&gt;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="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>-&gt;<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>-&gt;<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>(&amp;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>-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00660"></a>00660     r = _check(&amp;pinfo, strlen(path), path);
+<a name="l00661"></a>00661     <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<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>(&amp;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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__check_8c.html b/www/api/lightmediascanner__check_8c.html
new file mode 100644 (file)
index 0000000..a2da85b
--- /dev/null
@@ -0,0 +1,144 @@
+<!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: src/lib/lightmediascanner_check.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_check.c File Reference</h1><code>#include &lt;sys/wait.h&gt;</code><br>
+<code>#include &lt;sys/stat.h&gt;</code><br>
+<code>#include &lt;unistd.h&gt;</code><br>
+<code>#include &lt;dirent.h&gt;</code><br>
+<code>#include &lt;signal.h&gt;</code><br>
+<code>#include &lt;time.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#369266c24eacffb87046522897a570d5">_GNU_SOURCE</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__check_8c.html#f8084f435d209d810eb33deaa35fab5e">COMM_FINFO_FLAG_OUTDATED</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_check.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _GNU_SOURCE          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="f8084f435d209d810eb33deaa35fab5e"></a><!-- doxytag: member="lightmediascanner_check.c::COMM_FINFO_FLAG_OUTDATED" ref="f8084f435d209d810eb33deaa35fab5e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define COMM_FINFO_FLAG_OUTDATED&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="859492d896e816498edb471315efced1"></a><!-- doxytag: member="lightmediascanner_check.c::lms_check" ref="859492d896e816498edb471315efced1" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_check           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Check consistency of given directory.<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).<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</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#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>
+<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>
+
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.map
new file mode 100644 (file)
index 0000000..d5a36c7
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5 b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.md5
new file mode 100644 (file)
index 0000000..9496c78
--- /dev/null
@@ -0,0 +1 @@
+c182c7304ee5dc5f9c382186673e0b3f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png
new file mode 100644 (file)
index 0000000..126a44b
Binary files /dev/null and b/www/api/lightmediascanner__check_8c_859492d896e816498edb471315efced1_cgraph.png differ
diff --git a/www/api/lightmediascanner__check_8c__incl.map b/www/api/lightmediascanner__check_8c__incl.map
new file mode 100644 (file)
index 0000000..49a4069
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/lightmediascanner__check_8c__incl.md5 b/www/api/lightmediascanner__check_8c__incl.md5
new file mode 100644 (file)
index 0000000..1d92cb1
--- /dev/null
@@ -0,0 +1 @@
+6cd5c7de94121a998b8300cf1a0a053a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__check_8c__incl.png b/www/api/lightmediascanner__check_8c__incl.png
new file mode 100644 (file)
index 0000000..f09ad05
Binary files /dev/null and b/www/api/lightmediascanner__check_8c__incl.png differ
diff --git a/www/api/lightmediascanner__db_8h-source.html b/www/api/lightmediascanner__db_8h-source.html
new file mode 100644 (file)
index 0000000..c67d1b4
--- /dev/null
@@ -0,0 +1,133 @@
+<!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: src/lib/lightmediascanner_db.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef API</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00040"></a><a class="code" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">00040</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00041"></a><a class="code" href="lightmediascanner__db_8h.html#6fe68cac0abf3e2ca61141920414e93a">00041</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>&gt;</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>&gt;</span>
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00049"></a>00049 <span class="preprocessor">#endif</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span>
+<a name="l00060"></a>00060     <span class="comment">/* Image Records */</span>
+<a name="l00061"></a><a class="code" href="structlms__gps__info.html">00061</a>     <span class="keyword">struct </span><a class="code" href="structlms__gps__info.html">lms_gps_info</a> {
+<a name="l00062"></a><a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">00062</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a>;
+<a name="l00063"></a><a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">00063</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a>;
+<a name="l00064"></a><a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">00064</a>         <span class="keywordtype">double</span> <a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</a>;
+<a name="l00065"></a>00065     };
+<a name="l00066"></a>00066 
+<a name="l00067"></a><a class="code" href="structlms__image__info.html">00067</a>     <span class="keyword">struct </span><a class="code" href="structlms__image__info.html">lms_image_info</a> {
+<a name="l00068"></a><a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">00068</a>         int64_t <a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a>;
+<a name="l00069"></a><a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">00069</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>;
+<a name="l00070"></a><a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">00070</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>;
+<a name="l00071"></a><a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">00071</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">date</a>;
+<a name="l00072"></a><a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">00072</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a>;
+<a name="l00073"></a><a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">00073</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a>;
+<a name="l00074"></a><a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">00074</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</a>;
+<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="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="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="l00087"></a><a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">00087</a>         int64_t <a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a>;
+<a name="l00088"></a><a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">00088</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>;
+<a name="l00089"></a><a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">00089</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>;
+<a name="l00090"></a><a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">00090</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>;
+<a name="l00091"></a><a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">00091</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">genre</a>;
+<a name="l00092"></a><a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">00092</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a>;
+<a name="l00093"></a><a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">00093</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</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="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="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="l00106"></a><a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">00106</a>         int64_t <a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a>;
+<a name="l00107"></a><a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">00107</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#f3b8a8168ec317daef65da3b06f72bc0">title</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="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="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="l00120"></a><a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">00120</a>         int64_t <a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a>;
+<a name="l00121"></a><a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">00121</a>         <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> <a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</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="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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db_8h.html b/www/api/lightmediascanner__db_8h.html
new file mode 100644 (file)
index 0000000..7bfe1c9
--- /dev/null
@@ -0,0 +1,165 @@
+<!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: src/lib/lightmediascanner_db.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db.h File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</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>
+<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>
+
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html">lms_gps_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html">lms_image_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html">lms_audio_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__video__info.html">lms_video_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</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>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#5360af19a6df2e8b0d326344bb27e151">_LIGHTMEDIASCANNER_DB_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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> *&nbsp;</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>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gbf78dd3b90caa31e8901369211501200">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9b83f734ec4905778dec5494f39b7397">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#gb07d1e7fe962486b6e9d00581e8aac19">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API <a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g8864e532609191f07737c1d23c1bc65f">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info) GNUC_NON_NULL(1</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="5360af19a6df2e8b0d326344bb27e151"></a><!-- doxytag: member="lightmediascanner_db.h::_LIGHTMEDIASCANNER_DB_H_" ref="5360af19a6df2e8b0d326344bb27e151" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_DB_H_&nbsp;&nbsp;&nbsp;1          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_db.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db_8h__dep__incl.map b/www/api/lightmediascanner__db_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..519c048
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__db_8h__dep__incl.md5 b/www/api/lightmediascanner__db_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..753a782
--- /dev/null
@@ -0,0 +1 @@
+754b6d086ad7fe3e71ecb28b280bf3a8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db_8h__dep__incl.png b/www/api/lightmediascanner__db_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..c2cedd2
Binary files /dev/null and b/www/api/lightmediascanner__db_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__db_8h__incl.map b/www/api/lightmediascanner__db_8h__incl.map
new file mode 100644 (file)
index 0000000..96a24ef
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__db_8h__incl.md5 b/www/api/lightmediascanner__db_8h__incl.md5
new file mode 100644 (file)
index 0000000..b359039
--- /dev/null
@@ -0,0 +1 @@
+86eae6935af25b0833e6ae400acdd942
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db_8h__incl.png b/www/api/lightmediascanner__db_8h__incl.png
new file mode 100644 (file)
index 0000000..55b1e59
Binary files /dev/null and b/www/api/lightmediascanner__db_8h__incl.png differ
diff --git a/www/api/lightmediascanner__db__audio_8c-source.html b/www/api/lightmediascanner__db__audio_8c-source.html
new file mode 100644 (file)
index 0000000..a429d81
--- /dev/null
@@ -0,0 +1,648 @@
+<!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: src/lib/lightmediascanner_db_audio.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</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 &lt;stdlib.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;stdio.h&gt;</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, &amp;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;
+<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="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="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>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00253"></a>00253         lda = p;
+<a name="l00254"></a>00254         lda-&gt;_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="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-&gt;_references = 1;
+<a name="l00268"></a>00268     lda-&gt;db = db;
+<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>(&amp;_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-&gt;_is_started)
+<a name="l00296"></a>00296         <span class="keywordflow">return</span> 0;
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298     lda-&gt;insert_audio = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;insert_audio)
+<a name="l00303"></a>00303         <span class="keywordflow">return</span> -2;
+<a name="l00304"></a>00304 
+<a name="l00305"></a>00305     lda-&gt;insert_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;insert_artist)
+<a name="l00308"></a>00308         <span class="keywordflow">return</span> -3;
+<a name="l00309"></a>00309 
+<a name="l00310"></a>00310     lda-&gt;insert_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;insert_album)
+<a name="l00313"></a>00313         <span class="keywordflow">return</span> -4;
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315     lda-&gt;insert_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;insert_genre)
+<a name="l00318"></a>00318         <span class="keywordflow">return</span> -5;
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320     lda-&gt;get_artist = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;get_artist)
+<a name="l00323"></a>00323         <span class="keywordflow">return</span> -6;
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325     lda-&gt;get_album = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;get_album)
+<a name="l00328"></a>00328         <span class="keywordflow">return</span> -7;
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330     lda-&gt;get_genre = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(lda-&gt;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-&gt;get_genre)
+<a name="l00333"></a>00333         <span class="keywordflow">return</span> -8;
+<a name="l00334"></a>00334 
+<a name="l00335"></a>00335     lda-&gt;_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-&gt;_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-&gt;_references--;
+<a name="l00364"></a>00364     <span class="keywordflow">if</span> (lda-&gt;_references &gt; 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-&gt;insert_audio)
+<a name="l00368"></a>00368         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_audio, <span class="stringliteral">"insert_audio"</span>);
+<a name="l00369"></a>00369 
+<a name="l00370"></a>00370     <span class="keywordflow">if</span> (lda-&gt;insert_artist)
+<a name="l00371"></a>00371         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_artist, <span class="stringliteral">"insert_artist"</span>);
+<a name="l00372"></a>00372 
+<a name="l00373"></a>00373     <span class="keywordflow">if</span> (lda-&gt;insert_album)
+<a name="l00374"></a>00374         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_album, <span class="stringliteral">"insert_album"</span>);
+<a name="l00375"></a>00375 
+<a name="l00376"></a>00376     <span class="keywordflow">if</span> (lda-&gt;insert_genre)
+<a name="l00377"></a>00377         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;insert_genre, <span class="stringliteral">"insert_genre"</span>);
+<a name="l00378"></a>00378 
+<a name="l00379"></a>00379     <span class="keywordflow">if</span> (lda-&gt;get_artist)
+<a name="l00380"></a>00380         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;get_artist, <span class="stringliteral">"get_artist"</span>);
+<a name="l00381"></a>00381 
+<a name="l00382"></a>00382     <span class="keywordflow">if</span> (lda-&gt;get_album)
+<a name="l00383"></a>00383         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;get_album, <span class="stringliteral">"get_album"</span>);
+<a name="l00384"></a>00384 
+<a name="l00385"></a>00385     <span class="keywordflow">if</span> (lda-&gt;get_genre)
+<a name="l00386"></a>00386         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(lda-&gt;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>(&amp;_cache, lda-&gt;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-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-&gt;<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-&gt;<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, name-&gt;<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-&gt;get_artist, &amp;info-&gt;<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-&gt;<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 &lt; 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-&gt;insert_artist, &amp;info-&gt;<a class="code" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">artist</a>, artist_id);
+<a name="l00472"></a>00472 }
+<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="l00478"></a>00478     <span class="keywordtype">int</span> r, ret;
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480     stmt = lda-&gt;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-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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-&gt;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-&gt;<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, &amp;artist_id);
+<a name="l00524"></a>00524     <span class="keywordflow">if</span> (ret_artist &lt; 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) ? &amp;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 &lt; 0)
+<a name="l00533"></a>00533         <span class="keywordflow">return</span> -1;
+<a name="l00534"></a>00534 
+<a name="l00535"></a>00535     stmt = lda-&gt;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) ? &amp;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-&gt;<a class="code" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">album</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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="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="l00548"></a>00548                 sqlite3_errmsg(lda-&gt;db));
+<a name="l00549"></a>00549         ret = -3;
+<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-&gt;db);
+<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-&gt;get_genre, &amp;info-&gt;<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-&gt;<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 &lt; 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-&gt;insert_genre, &amp;info-&gt;<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-&gt;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-&gt;<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-&gt;<a class="code" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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="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-&gt;<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-&gt;<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-&gt;<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-&gt;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="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-&gt;<a class="code" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">id</a> &lt; 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, &amp;album_id);
+<a name="l00661"></a>00661     <span class="keywordflow">if</span> (ret_album &lt; 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, &amp;genre_id);
+<a name="l00665"></a>00665     <span class="keywordflow">if</span> (ret_genre &lt; 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) ? &amp;album_id : NULL,
+<a name="l00670"></a>00670                             (ret_genre == 0) ? &amp;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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__audio_8c.html b/www/api/lightmediascanner__db__audio_8c.html
new file mode 100644 (file)
index 0000000..cbf4fae
--- /dev/null
@@ -0,0 +1,124 @@
+<!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: src/lib/lightmediascanner_db_audio.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_audio.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</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>
+<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>
+
+<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">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__audio_8c.html#d2a4e90aa49af7291552e6ac172aaa51">_DB_T_UPDATE</a>(db, name, array)&nbsp;&nbsp;&nbsp;lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</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__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g39731623b0bc5436858820a94487fdc1">lms_db_audio_start</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g7560f9dab2ecd309290d200ea809375d">lms_db_audio_free</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__audio_8c.html#334b8c49f8dbf76024ee6b1d69f56c8c">lms_db_audio_add</a> (<a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *lda, struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="d2a4e90aa49af7291552e6ac172aaa51"></a><!-- doxytag: member="lightmediascanner_db_audio.c::_DB_T_UPDATE" ref="d2a4e90aa49af7291552e6ac172aaa51" args="(db, name, array)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _DB_T_UPDATE          </td>
+          <td>(</td>
+          <td class="paramtype">db,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">name,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">array&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;lms_db_table_update_if_required(db, name, LMS_ARRAY_SIZE(array), array)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="334b8c49f8dbf76024ee6b1d69f56c8c"></a><!-- doxytag: member="lightmediascanner_db_audio.c::lms_db_audio_add" ref="334b8c49f8dbf76024ee6b1d69f56c8c" args="(lms_db_audio_t *lda, struct lms_audio_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_audio_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#ge13e30aaedfabd6f1eec256649d9bc98">lms_db_audio_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lda</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__audio__info.html">lms_audio_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add audio file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<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>lda</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g09c4349148be1bdf02f069f8acb191ee">lms_db_audio_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>audio information to store.</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__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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__audio_8c__incl.map b/www/api/lightmediascanner__db__audio_8c__incl.map
new file mode 100644 (file)
index 0000000..ddf4717
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__db__audio_8c__incl.md5 b/www/api/lightmediascanner__db__audio_8c__incl.md5
new file mode 100644 (file)
index 0000000..71f8bc2
--- /dev/null
@@ -0,0 +1 @@
+4c77f05e70422b3473612da15f99cfc5
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__audio_8c__incl.png b/www/api/lightmediascanner__db__audio_8c__incl.png
new file mode 100644 (file)
index 0000000..bd1c10d
Binary files /dev/null and b/www/api/lightmediascanner__db__audio_8c__incl.png differ
diff --git a/www/api/lightmediascanner__db__common_8c-source.html b/www/api/lightmediascanner__db__common_8c-source.html
new file mode 100644 (file)
index 0000000..02eabde
--- /dev/null
@@ -0,0 +1,795 @@
+<!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: src/lib/lightmediascanner_db_common.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;stdlib.h&gt;</span>
+<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00005"></a>00005 
+<a name="l00006"></a>00006 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 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 &lt; 3003009 */</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 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 &amp;&amp; i &lt;= 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 &lt; 3003007 */</span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="preprocessor">#if SQLITE_VERSION_NUMBER &lt; 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, &amp;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 &lt; 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, &amp;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 &lt; 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, &amp;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;
+<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="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="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="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="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 &gt; 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="l00327"></a>00327     }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329     <span class="keywordflow">for</span> (; current_version &lt; 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-&gt;%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 &lt; 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 &lt; cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>; i++)
+<a name="l00365"></a>00365         <span class="keywordflow">if</span> (cache-&gt;<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="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-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> = new_size;
+<a name="l00375"></a>00375     cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> = realloc(cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>,
+<a name="l00376"></a>00376                              cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> * <span class="keyword">sizeof</span>(*cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>));
+<a name="l00377"></a>00377     <span class="keywordflow">if</span> (cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> &amp;&amp; !cache-&gt;<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-&gt;<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 &gt;= 0) {
+<a name="l00394"></a>00394         e = cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00395"></a>00395         <span class="keywordflow">if</span> (e-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00411"></a>00411     e-&gt;<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a> = db;
+<a name="l00412"></a>00412     e-&gt;<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 &lt; 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-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a> + idx;
+<a name="l00429"></a>00429     <span class="keywordflow">if</span> (e-&gt;<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-&gt;<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 &lt; cache-&gt;<a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a> - 1; idx++)
+<a name="l00436"></a>00436         cache-&gt;<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>[idx] = cache-&gt;<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-&gt;<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 &lt; 0)
+<a name="l00448"></a>00448         <span class="keywordflow">return</span> -1;
+<a name="l00449"></a>00449 
+<a name="l00450"></a>00450     *pdata = cache-&gt;<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, &amp;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="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, &amp;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, &amp;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="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="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="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-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<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-&gt;<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-&gt;<a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a> = sqlite3_column_int64(stmt, 0);
+<a name="l00590"></a>00590     finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = sqlite3_column_int(stmt, 1);
+<a name="l00591"></a>00591     finfo-&gt;<a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a> = sqlite3_column_int(stmt, 2);
+<a name="l00592"></a>00592     finfo-&gt;<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="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-&gt;<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-&gt;<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="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-&gt;<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-&gt;<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="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="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="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-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<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-&gt;<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="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-&gt;<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-&gt;<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="l00680"></a>00680 
+<a name="l00681"></a>00681     finfo-&gt;<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="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-&gt;<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-&gt;<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-&gt;<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="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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__common_8c.html b/www/api/lightmediascanner__db__common_8c.html
new file mode 100644 (file)
index 0000000..772e05a
--- /dev/null
@@ -0,0 +1,1415 @@
+<!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: src/lib/lightmediascanner_db_common.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_common.c File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405">sqlite3_prepare_v2</a> (sqlite3 *db, const char *sql, int len, sqlite3_stmt **stmt, const char **tail)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00">sqlite3_clear_bindings</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#822cae681398710b63c9af149fdacedb">lms_db_create_trigger_if_not_exists</a> (sqlite3 *db, const char *sql)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a> (sqlite3 *db, const char *sql)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a> (sqlite3_stmt *stmt, const char *name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#88c461ae88da3eb47987c5a0b15c5888">lms_db_bind_text</a> (sqlite3_stmt *stmt, int col, const char *text, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6">lms_db_bind_blob</a> (sqlite3_stmt *stmt, int col, const void *blob, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#f2fe78bc45dc33d843313a846db5ce7c">lms_db_bind_int64</a> (sqlite3_stmt *stmt, int col, int64_t value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#2a0a5d3a27fdee8508b2b0cc59979417">lms_db_bind_int64_or_null</a> (sqlite3_stmt *stmt, int col, int64_t *p_value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#de261036cf3228f0b6a79a9c68687c4f">lms_db_bind_int</a> (sqlite3_stmt *stmt, int col, int value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#4ae660a876f1e362d1ab2f8c68bdef3f">lms_db_bind_double</a> (sqlite3_stmt *stmt, int col, double value)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#eba3215ee5981a73e9d0fed0a7e079cd">lms_db_table_version_get</a> (sqlite3 *db, const char *table)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#296c81e4c64be1c7935ef31038aeb2c0">lms_db_cache_del</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void *data)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#e7a672fa5760bae1a669c737648fe7d3">lms_db_cache_get</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void **pdata)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a> (sqlite3_stmt *stmt)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#e529ad5c4478d53685c65ec69dc5b1f4">lms_db_insert_file_info</a> (sqlite3_stmt *stmt, struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#bb2a9cdbbc7680d1ec85ef3f086b3f63">lms_db_delete_file_info</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#024e3bd9385fd740f75618716c90b04f">lms_db_set_file_dtime</a> (sqlite3_stmt *stmt, const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *finfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__common_8c.html#df572e74e0821a66ebd16f575b4fb7c4">lms_db_get_files</a> (sqlite3_stmt *stmt, const char *path, int len)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="5ff807216285c93325ffaf33361dd6fc"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_begin_transaction" ref="5ff807216285c93325ffaf33361dd6fc" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_blob           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>blob</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_double           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64_or_null           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&nbsp;</td>
+          <td class="paramname"> <em>p_value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_text           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>text</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_add           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_del           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_get           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>pdata</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="1787fdaf148358c7a518e91dfd871ca1"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_begin_transaction" ref="1787fdaf148358c7a518e91dfd871ca1" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="559925f8e4d5bf61d1bcf44844a95699"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_delete_file_info" ref="559925f8e4d5bf61d1bcf44844a95699" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="bff1aa6077215f3d70d4d5b1a9b7a498"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_end_transaction" ref="bff1aa6077215f3d70d4d5b1a9b7a498" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="b00a624bc01da9b796f7bc6e1d507cf8"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_get_file_info" ref="b00a624bc01da9b796f7bc6e1d507cf8" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="73ae2cfd7babf80294cf31f02906223b"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_get_files" ref="73ae2cfd7babf80294cf31f02906223b" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="9a5886e755eb428ac811956144eee0dc"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_insert_file_info" ref="9a5886e755eb428ac811956144eee0dc" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="1b6950ca9e548670a4cb7fd0ec5220a8"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_set_file_dtime" ref="1b6950ca9e548670a4cb7fd0ec5220a8" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="1e6e76cfa9d6faa3c3b8035004eff1a0"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_compile_stmt_update_file_info" ref="1e6e76cfa9d6faa3c3b8035004eff1a0" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="3798a46baaedc4d466879865456acc94"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_create_core_tables_if_required" ref="3798a46baaedc4d466879865456acc94" args="(sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_core_tables_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_trigger_if_not_exists           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="ffa877e4fa751f090e7af8c2025d245c"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_end_transaction" ref="ffa877e4fa751f090e7af8c2025d245c" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_finalize_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="df572e74e0821a66ebd16f575b4fb7c4"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_get_files" ref="df572e74e0821a66ebd16f575b4fb7c4" args="(sqlite3_stmt *stmt, const char *path, int len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="e529ad5c4478d53685c65ec69dc5b1f4"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_insert_file_info" ref="e529ad5c4478d53685c65ec69dc5b1f4" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="226c6f7ab2e7923b747b7090357ea419"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_reset_stmt" ref="226c6f7ab2e7923b747b7090357ea419" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_reset_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="024e3bd9385fd740f75618716c90b04f"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_set_file_dtime" ref="024e3bd9385fd740f75618716c90b04f" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="9bca88ae79959baff3accee8ce10b558"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_update" ref="9bca88ae79959baff3accee8ce10b558" args="(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>current_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <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> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="86b766535f9dc7895da7d0f606201700"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_update_if_required" ref="86b766535f9dc7895da7d0f606201700" args="(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <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> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="eba3215ee5981a73e9d0fed0a7e079cd"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_version_get" ref="eba3215ee5981a73e9d0fed0a7e079cd" args="(sqlite3 *db, const char *table)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_version_get           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="46e6e318ea9bb4a7ffdfe40c842da4e7"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_table_version_set" ref="46e6e318ea9bb4a7ffdfe40c842da4e7" args="(sqlite3 *db, const char *table, unsigned int version)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_version_set           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="0f727cd41bbb90af2e08b3ee7ca76de9"></a><!-- doxytag: member="lightmediascanner_db_common.c::lms_db_update_file_info" ref="0f727cd41bbb90af2e08b3ee7ca76de9" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="3f8fb8f31c1876b3579956b3d898cd00"></a><!-- doxytag: member="lightmediascanner_db_common.c::sqlite3_clear_bindings" ref="3f8fb8f31c1876b3579956b3d898cd00" args="(sqlite3_stmt *stmt)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int sqlite3_clear_bindings           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int sqlite3_prepare_v2           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3_stmt **&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char **&nbsp;</td>
+          <td class="paramname"> <em>tail</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.map
new file mode 100644 (file)
index 0000000..90f6a23
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.md5
new file mode 100644 (file)
index 0000000..5e579df
--- /dev/null
@@ -0,0 +1 @@
+48d33c778b3fddfffba6e852e034f89e
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png
new file mode 100644 (file)
index 0000000..27715dc
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_024e3bd9385fd740f75618716c90b04f_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.map b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.map
new file mode 100644 (file)
index 0000000..f250c90
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.md5
new file mode 100644 (file)
index 0000000..76125c3
--- /dev/null
@@ -0,0 +1 @@
+7412d602f0beb325ae8c656a13097e94
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png
new file mode 100644 (file)
index 0000000..52482cd
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_0f727cd41bbb90af2e08b3ee7ca76de9_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.map b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.map
new file mode 100644 (file)
index 0000000..e7045d2
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.md5
new file mode 100644 (file)
index 0000000..a35505b
--- /dev/null
@@ -0,0 +1 @@
+597cf289a37dec2c079a7e40c848ec2c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png
new file mode 100644 (file)
index 0000000..de691e2
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_1787fdaf148358c7a518e91dfd871ca1_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.map
new file mode 100644 (file)
index 0000000..d94cf4b
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.md5
new file mode 100644 (file)
index 0000000..7804ae4
--- /dev/null
@@ -0,0 +1 @@
+4140a991699f501c103f1dd52e357650
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png
new file mode 100644 (file)
index 0000000..4149e94
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_1b6950ca9e548670a4cb7fd0ec5220a8_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.map
new file mode 100644 (file)
index 0000000..44c61e3
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.md5
new file mode 100644 (file)
index 0000000..e293c4e
--- /dev/null
@@ -0,0 +1 @@
+42099300ab356ee9f37a5189393d9a29
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png
new file mode 100644 (file)
index 0000000..53a30cf
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_1e6e76cfa9d6faa3c3b8035004eff1a0_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.map b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.map
new file mode 100644 (file)
index 0000000..c762020
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32">
diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.md5
new file mode 100644 (file)
index 0000000..c6f38a0
--- /dev/null
@@ -0,0 +1 @@
+0559150039d6a3e46b15f46277f3053f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png
new file mode 100644 (file)
index 0000000..d7b9e79
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_226c6f7ab2e7923b747b7090357ea419_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.map
new file mode 100644 (file)
index 0000000..96b428f
--- /dev/null
@@ -0,0 +1,7 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.md5
new file mode 100644 (file)
index 0000000..1781a1d
--- /dev/null
@@ -0,0 +1 @@
+d683eb6d3d57ba2eb96d3762485f9724
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png
new file mode 100644 (file)
index 0000000..68d16c3
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_46e6e318ea9bb4a7ffdfe40c842da4e7_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.map
new file mode 100644 (file)
index 0000000..49aeb2f
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.md5
new file mode 100644 (file)
index 0000000..25e6015
--- /dev/null
@@ -0,0 +1 @@
+11ab49ab26e02addb26e1495f2117883
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png
new file mode 100644 (file)
index 0000000..2144215
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_559925f8e4d5bf61d1bcf44844a95699_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.map b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.map
new file mode 100644 (file)
index 0000000..b45f793
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#21da1a6588f354b758211583559ae405" title="sqlite3_prepare_v2" alt="" coords="196,5,319,32">
diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.md5
new file mode 100644 (file)
index 0000000..c8e59a5
--- /dev/null
@@ -0,0 +1 @@
+c88b612b05b498869d844a38382eee06
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png
new file mode 100644 (file)
index 0000000..b8b3104
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_5fddf47521f83929b0c90a481fa01c5b_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.map
new file mode 100644 (file)
index 0000000..8045b86
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.md5
new file mode 100644 (file)
index 0000000..74dd657
--- /dev/null
@@ -0,0 +1 @@
+3cc06df5622a01305fd152e7404ce386
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png
new file mode 100644 (file)
index 0000000..68595e6
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_73ae2cfd7babf80294cf31f02906223b_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.map
new file mode 100644 (file)
index 0000000..c7a0d16
--- /dev/null
@@ -0,0 +1,10 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.md5
new file mode 100644 (file)
index 0000000..245609e
--- /dev/null
@@ -0,0 +1 @@
+9db3c86e6669be30b89f5dce87d82668
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png
new file mode 100644 (file)
index 0000000..8891e0c
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_86b766535f9dc7895da7d0f606201700_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.map
new file mode 100644 (file)
index 0000000..ad44bfe
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.md5
new file mode 100644 (file)
index 0000000..41fed04
--- /dev/null
@@ -0,0 +1 @@
+70af470fb9b373dbdde441f9c228fdac
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png
new file mode 100644 (file)
index 0000000..434c52b
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_9a5886e755eb428ac811956144eee0dc_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.map b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.map
new file mode 100644 (file)
index 0000000..ff6afc5
--- /dev/null
@@ -0,0 +1,8 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.md5
new file mode 100644 (file)
index 0000000..9a000f1
--- /dev/null
@@ -0,0 +1 @@
+28f5727047bcdc514f6c42a943efead4
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png
new file mode 100644 (file)
index 0000000..840fd70
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_9bca88ae79959baff3accee8ce10b558_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c__incl.map b/www/api/lightmediascanner__db__common_8c__incl.map
new file mode 100644 (file)
index 0000000..08b8776
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c__incl.md5 b/www/api/lightmediascanner__db__common_8c__incl.md5
new file mode 100644 (file)
index 0000000..e8ff10c
--- /dev/null
@@ -0,0 +1 @@
+264a73e0300f7fc21733a46a317433fb
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c__incl.png b/www/api/lightmediascanner__db__common_8c__incl.png
new file mode 100644 (file)
index 0000000..eb21bf9
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c__incl.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.map
new file mode 100644 (file)
index 0000000..a62f463
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.md5
new file mode 100644 (file)
index 0000000..69eaa35
--- /dev/null
@@ -0,0 +1 @@
+48dd492320b5d2c740f331d4213ef1e6
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png
new file mode 100644 (file)
index 0000000..f22b93d
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_b00a624bc01da9b796f7bc6e1d507cf8_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.map b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.map
new file mode 100644 (file)
index 0000000..16fdf07
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.md5
new file mode 100644 (file)
index 0000000..c25b812
--- /dev/null
@@ -0,0 +1 @@
+f15d940169e90cc24dc1006e856a6422
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png
new file mode 100644 (file)
index 0000000..c777388
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_bb2a9cdbbc7680d1ec85ef3f086b3f63_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.map
new file mode 100644 (file)
index 0000000..49aeb2f
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.md5
new file mode 100644 (file)
index 0000000..eda4808
--- /dev/null
@@ -0,0 +1 @@
+5a19337cd92bc81a6609fb3efc0944b8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png
new file mode 100644 (file)
index 0000000..c91b45c
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_bff1aa6077215f3d70d4d5b1a9b7a498_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.map b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.map
new file mode 100644 (file)
index 0000000..a835ffe
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.md5
new file mode 100644 (file)
index 0000000..b330f4a
--- /dev/null
@@ -0,0 +1 @@
+1fc1d627110c5472cfa8eca613ac8338
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png
new file mode 100644 (file)
index 0000000..ad34967
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_c0b7cf0b2eb0f55fbf8a4103bc9569d1_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.map b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.map
new file mode 100644 (file)
index 0000000..6d6226e
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#fee26461dbd6c89c82794c94aaeeaef6" title="lms_db_bind_blob" alt="" coords="169,5,289,32">
diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.md5
new file mode 100644 (file)
index 0000000..c30a280
--- /dev/null
@@ -0,0 +1 @@
+cc1edbcc8e3d21faf0252ae0d894ea4d
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png
new file mode 100644 (file)
index 0000000..e3b7acb
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_df572e74e0821a66ebd16f575b4fb7c4_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.map
new file mode 100644 (file)
index 0000000..722d046
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.md5
new file mode 100644 (file)
index 0000000..44f8d00
--- /dev/null
@@ -0,0 +1 @@
+588cb80a9f2488c89433dd877e1f5200
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png
new file mode 100644 (file)
index 0000000..1fcc9cc
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_e529ad5c4478d53685c65ec69dc5b1f4_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.map b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.map
new file mode 100644 (file)
index 0000000..2483baf
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5 b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.md5
new file mode 100644 (file)
index 0000000..e8512d6
--- /dev/null
@@ -0,0 +1 @@
+b1f660c2d4925e78ca3ebe1d9828a8cd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png
new file mode 100644 (file)
index 0000000..788c25a
Binary files /dev/null and b/www/api/lightmediascanner__db__common_8c_eba3215ee5981a73e9d0fed0a7e079cd_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__image_8c-source.html b/www/api/lightmediascanner__db__image_8c-source.html
new file mode 100644 (file)
index 0000000..b168c02
--- /dev/null
@@ -0,0 +1,260 @@
+<!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: src/lib/lightmediascanner_db_image.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</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 &lt;stdlib.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;stdio.h&gt;</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, &amp;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 
+<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, &amp;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="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="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>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00103"></a>00103         ldi = p;
+<a name="l00104"></a>00104         ldi-&gt;_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-&gt;_references = 1;
+<a name="l00118"></a>00118     ldi-&gt;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>(&amp;_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="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-&gt;_is_started)
+<a name="l00146"></a>00146         <span class="keywordflow">return</span> 0;
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148     ldi-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldi-&gt;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-&gt;insert)
+<a name="l00154"></a>00154         <span class="keywordflow">return</span> -2;
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156     ldi-&gt;_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-&gt;_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-&gt;_references--;
+<a name="l00185"></a>00185     <span class="keywordflow">if</span> (ldi-&gt;_references &gt; 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-&gt;insert)
+<a name="l00189"></a>00189         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldi-&gt;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>(&amp;_cache, ldi-&gt;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="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-&gt;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-&gt;<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-&gt;<a class="code" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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-&gt;<a class="code" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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="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-&gt;<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-&gt;<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="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-&gt;<a class="code" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</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-&gt;<a class="code" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">orientation</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-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</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-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</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-&gt;<a class="code" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">gps</a>.<a class="code" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</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-&gt;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="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="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-&gt;<a class="code" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">id</a> &lt; 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__image_8c.html b/www/api/lightmediascanner__db__image_8c.html
new file mode 100644 (file)
index 0000000..8ef9ede
--- /dev/null
@@ -0,0 +1,92 @@
+<!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: src/lib/lightmediascanner_db_image.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_image.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</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>
+<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>
+
+<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></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__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g66dc91038d76fa96d9feaaa119e2ae56">lms_db_image_start</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g5160a3f620f1ebd562b6ec0add0f65a6">lms_db_image_free</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__image_8c.html#f23fcc3d62a0f6592e14eaf1dc9b5833">lms_db_image_add</a> (<a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *ldi, struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="f23fcc3d62a0f6592e14eaf1dc9b5833"></a><!-- doxytag: member="lightmediascanner_db_image.c::lms_db_image_add" ref="f23fcc3d62a0f6592e14eaf1dc9b5833" args="(lms_db_image_t *ldi, struct lms_image_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_image_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gf09fb00e8cf6c7d5f76f257ecdea11a6">lms_db_image_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldi</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__image__info.html">lms_image_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add image file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<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>ldi</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g3eac8dbebc0a847b63702e531872e2e7">lms_db_image_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>image information to store.</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__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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__image_8c__incl.map b/www/api/lightmediascanner__db__image_8c__incl.map
new file mode 100644 (file)
index 0000000..8df1391
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__db__image_8c__incl.md5 b/www/api/lightmediascanner__db__image_8c__incl.md5
new file mode 100644 (file)
index 0000000..7511090
--- /dev/null
@@ -0,0 +1 @@
+e083e2e3773d3d81a27a5260aa936185
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__image_8c__incl.png b/www/api/lightmediascanner__db__image_8c__incl.png
new file mode 100644 (file)
index 0000000..79a426a
Binary files /dev/null and b/www/api/lightmediascanner__db__image_8c__incl.png differ
diff --git a/www/api/lightmediascanner__db__playlist_8c-source.html b/www/api/lightmediascanner__db__playlist_8c-source.html
new file mode 100644 (file)
index 0000000..d36b5f0
--- /dev/null
@@ -0,0 +1,224 @@
+<!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: src/lib/lightmediascanner_db_playlist.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</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 &lt;stdlib.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;stdio.h&gt;</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, &amp;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     }
+<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, &amp;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="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="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>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00097"></a>00097         ldp = p;
+<a name="l00098"></a>00098         ldp-&gt;_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-&gt;_references = 1;
+<a name="l00112"></a>00112     ldp-&gt;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>(&amp;_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="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-&gt;_is_started)
+<a name="l00140"></a>00140         <span class="keywordflow">return</span> 0;
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142     ldp-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldp-&gt;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-&gt;insert)
+<a name="l00146"></a>00146         <span class="keywordflow">return</span> -2;
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148     ldp-&gt;_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-&gt;_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-&gt;_references--;
+<a name="l00177"></a>00177     <span class="keywordflow">if</span> (ldp-&gt;_references &gt; 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-&gt;insert)
+<a name="l00181"></a>00181         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldp-&gt;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>(&amp;_cache, ldp-&gt;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="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-&gt;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-&gt;<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-&gt;<a class="code" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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-&gt;<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="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-&gt;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="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="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-&gt;<a class="code" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">id</a> &lt; 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__playlist_8c.html b/www/api/lightmediascanner__db__playlist_8c.html
new file mode 100644 (file)
index 0000000..6b62a9b
--- /dev/null
@@ -0,0 +1,92 @@
+<!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: src/lib/lightmediascanner_db_playlist.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_playlist.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</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>
+<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>
+
+<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></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__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g9a0ba775eacd1abdc6bfd08c26bbd437">lms_db_playlist_start</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ge0e003fb6c8deccf8c15a7cedb88c789">lms_db_playlist_free</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__playlist_8c.html#4fe309efb9c2c24b6e2f77fffca81ee4">lms_db_playlist_add</a> (<a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *ldp, struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="4fe309efb9c2c24b6e2f77fffca81ee4"></a><!-- doxytag: member="lightmediascanner_db_playlist.c::lms_db_playlist_add" ref="4fe309efb9c2c24b6e2f77fffca81ee4" args="(lms_db_playlist_t *ldp, struct lms_playlist_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_playlist_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#g9901260afad69e602336a4e567e386c3">lms_db_playlist_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldp</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__playlist__info.html">lms_playlist_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add playlist file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<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>ldp</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#g379e3bbb3f4a87b1d389df587dec0875">lms_db_playlist_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>playlist information to store.</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__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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.map b/www/api/lightmediascanner__db__playlist_8c__incl.map
new file mode 100644 (file)
index 0000000..3e17143
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.md5 b/www/api/lightmediascanner__db__playlist_8c__incl.md5
new file mode 100644 (file)
index 0000000..d69b864
--- /dev/null
@@ -0,0 +1 @@
+7f27c971bdef77eda7ac4a4e6b647a3a
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__playlist_8c__incl.png b/www/api/lightmediascanner__db__playlist_8c__incl.png
new file mode 100644 (file)
index 0000000..6c4a06a
Binary files /dev/null and b/www/api/lightmediascanner__db__playlist_8c__incl.png differ
diff --git a/www/api/lightmediascanner__db__private_8h-source.html b/www/api/lightmediascanner__db__private_8h-source.html
new file mode 100644 (file)
index 0000000..d915bab
--- /dev/null
@@ -0,0 +1,100 @@
+<!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: src/lib/lightmediascanner_db_private.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00031"></a><a class="code" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">00031</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 sqlite3_stmt *<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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00039"></a>00039 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00040"></a>00040 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#226c6f7ab2e7923b747b7090357ea419">lms_db_reset_stmt</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00042"></a>00042 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00043"></a>00043 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00044"></a>00044 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00045"></a>00045 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00046"></a>00046 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00048"></a>00048 
+<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="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="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="l00059"></a><a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">00059</a>     <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>;
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061 
+<a name="l00062"></a><a class="code" href="structlms__db__cache.html">00062</a> <span class="keyword">struct </span><a class="code" href="structlms__db__cache.html">lms_db_cache</a> {
+<a name="l00063"></a><a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">00063</a>     <span class="keywordtype">int</span> <a class="code" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">size</a>;
+<a name="l00064"></a><a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">00064</a>     <span class="keyword">struct </span><a class="code" href="structlms__db__cache__entry.html">lms_db_cache_entry</a> *<a class="code" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">entries</a>;
+<a name="l00065"></a>00065 };
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 <span class="keywordtype">int</span> <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 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00068"></a>00068 <span class="keywordtype">int</span> <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 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> *<a class="code" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00069"></a>00069 <span class="keywordtype">int</span> <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 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>, <span class="keywordtype">void</span> **pdata) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2, 3);
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00074"></a>00074 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00075"></a>00075 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00076"></a>00076 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00077"></a>00077 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00078"></a>00078 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00079"></a>00079 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00080"></a>00080 sqlite3_stmt *<a class="code" href="lightmediascanner__db__common_8c.html#73ae2cfd7babf80294cf31f02906223b">lms_db_compile_stmt_get_files</a>(sqlite3 *<a class="code" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a>) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> <a class="code" href="lightmediascanner__db__common_8c.html#ffa877e4fa751f090e7af8c2025d245c">lms_db_end_transaction</a>(sqlite3_stmt *stmt) <a class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1);
+<a name="l00084"></a>00084 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00085"></a>00085 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00086"></a>00086 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00087"></a>00087 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00088"></a>00088 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00089"></a>00089 <span class="keywordtype">int</span> <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 class="code" href="lightmediascanner_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(1, 2);
+<a name="l00090"></a>00090 
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__private_8h.html b/www/api/lightmediascanner__db__private_8h.html
new file mode 100644 (file)
index 0000000..72e45ac
--- /dev/null
@@ -0,0 +1,1285 @@
+<!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: src/lib/lightmediascanner_db_private.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_private.h File Reference</h1><code>#include &lt;sqlite3.h&gt;</code><br>
+<code>#include &lt;sys/types.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</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>
+<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>
+
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache.html">lms_db_cache</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#97d5ed207ef5b72f4fba0cab38594bb7">_LIGHTMEDIASCANNER_DB_PRIVATE_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#6301bd096100f8adf24d2caff3aa0b75">lms_db_compile_stmt</a> (sqlite3 *db, const char *sql) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#2660f629fbdf3d4144a6143fee837a27">lms_db_finalize_stmt</a> (sqlite3_stmt *stmt, const char *name) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ee78f418f0f3c9ead3023b1453c63556">lms_db_reset_stmt</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#14d56e02624ad6130bc59ae9bb950ac3">lms_db_bind_text</a> (sqlite3_stmt *stmt, int col, const char *text, int len) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#7fd514b582578c18a25cdbf6c561243c">lms_db_bind_blob</a> (sqlite3_stmt *stmt, int col, const void *blob, int len) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#bbb18d7cc44f7e363c0f240849d72c31">lms_db_bind_int64</a> (sqlite3_stmt *stmt, int col, int64_t value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#cd7006f0271b9a47937dc2d2ae5480fe">lms_db_bind_int64_or_null</a> (sqlite3_stmt *stmt, int col, int64_t *p_value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#37815f859116b46089bea4ba84bb23d2">lms_db_bind_int</a> (sqlite3_stmt *stmt, int col, int value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9e78297037179998924354e73ca69349">lms_db_bind_double</a> (sqlite3_stmt *stmt, int col, double value) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#f47d604dd4e11f81be1ad045ee723789">lms_db_create_trigger_if_not_exists</a> (sqlite3 *db, const char *sql) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#23cf7fff49641b39c017bdd076b112a7">lms_db_table_version_get</a> (sqlite3 *db, const char *table) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</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&nbsp;</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 int&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#e3e18958c74ba988c2bfdf77a3793ceb">lms_db_cache_del</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ec1ff2c5b629374611336d56871a8c0b">lms_db_cache_get</a> (struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#13ca09c885535a2968e707120e935268">lms_db_create_core_tables_if_required</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#073c254ca7b4d3f42e1be1854bcc42a3">lms_db_compile_stmt_begin_transaction</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#09feca4fbfde33d5647cdd5cc2de6500">lms_db_compile_stmt_end_transaction</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#327d54a6dac083e356fd609298a0cbd5">lms_db_compile_stmt_get_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#bf21f88ddbe28a8290d0df32af0f079c">lms_db_compile_stmt_insert_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#69eb9d9058d9432f7658f9adffb79ed6">lms_db_compile_stmt_update_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#76941bdbbdb711fff821343e91c2cd97">lms_db_compile_stmt_delete_file_info</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#08c34b5b1b6e927a696ff0ce66562f54">lms_db_compile_stmt_set_file_dtime</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">sqlite3_stmt *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#1cc8a80961a0febdd099a028f3da9c30">lms_db_compile_stmt_get_files</a> (sqlite3 *db) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#3a7256cb653542bbf563feeb2aa2d0ea">lms_db_begin_transaction</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#8ee7bfba83958b80f717a6ccbad2a84c">lms_db_end_transaction</a> (sqlite3_stmt *stmt) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9cce62321be32274de720ec946473eeb">lms_db_update_file_info</a> (sqlite3_stmt *stmt, const 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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#e1df123e8d894a49f740ec6429af8159">lms_db_get_file_info</a> (sqlite3_stmt *stmt, 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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#9353bf3cfbe2c0045023658597b0cf1d">lms_db_insert_file_info</a> (sqlite3_stmt *stmt, 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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#ec17baec1e001f67334b0265d465fb50">lms_db_delete_file_info</a> (sqlite3_stmt *stmt, const 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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__private_8h.html#0fa3bfe1fa3a01a4dd231b6f818122cb">lms_db_set_file_dtime</a> (sqlite3_stmt *stmt, const 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&nbsp;</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(*)&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="97d5ed207ef5b72f4fba0cab38594bb7"></a><!-- doxytag: member="lightmediascanner_db_private.h::_LIGHTMEDIASCANNER_DB_PRIVATE_H_" ref="97d5ed207ef5b72f4fba0cab38594bb7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_DB_PRIVATE_H_&nbsp;&nbsp;&nbsp;1          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_db_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="3a7256cb653542bbf563feeb2aa2d0ea"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_begin_transaction" ref="3a7256cb653542bbf563feeb2aa2d0ea" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_blob           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&nbsp;</td>
+          <td class="paramname"> <em>blob</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_double           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_int64_or_null           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int64_t *&nbsp;</td>
+          <td class="paramname"> <em>p_value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_bind_text           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>text</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_cache_add           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e3e18958c74ba988c2bfdf77a3793ceb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_del" ref="e3e18958c74ba988c2bfdf77a3793ceb" args="(struct lms_db_cache *cache, const sqlite3 *db, void *data) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_cache_del           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ec1ff2c5b629374611336d56871a8c0b"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_cache_get" ref="ec1ff2c5b629374611336d56871a8c0b" args="(struct lms_db_cache *cache, const sqlite3 *db, void **pdata) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_cache_get           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structlms__db__cache.html">lms_db_cache</a> *&nbsp;</td>
+          <td class="paramname"> <em>cache</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>pdata</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="6301bd096100f8adf24d2caff3aa0b75"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt" ref="6301bd096100f8adf24d2caff3aa0b75" args="(sqlite3 *db, const char *sql) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="073c254ca7b4d3f42e1be1854bcc42a3"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_begin_transaction" ref="073c254ca7b4d3f42e1be1854bcc42a3" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_begin_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="76941bdbbdb711fff821343e91c2cd97"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_delete_file_info" ref="76941bdbbdb711fff821343e91c2cd97" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="09feca4fbfde33d5647cdd5cc2de6500"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_end_transaction" ref="09feca4fbfde33d5647cdd5cc2de6500" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="327d54a6dac083e356fd609298a0cbd5"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_get_file_info" ref="327d54a6dac083e356fd609298a0cbd5" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="1cc8a80961a0febdd099a028f3da9c30"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_get_files" ref="1cc8a80961a0febdd099a028f3da9c30" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="bf21f88ddbe28a8290d0df32af0f079c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_insert_file_info" ref="bf21f88ddbe28a8290d0df32af0f079c" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="08c34b5b1b6e927a696ff0ce66562f54"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_set_file_dtime" ref="08c34b5b1b6e927a696ff0ce66562f54" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="69eb9d9058d9432f7658f9adffb79ed6"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_compile_stmt_update_file_info" ref="69eb9d9058d9432f7658f9adffb79ed6" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* lms_db_compile_stmt_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="13ca09c885535a2968e707120e935268"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_create_core_tables_if_required" ref="13ca09c885535a2968e707120e935268" args="(sqlite3 *db) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_db_create_core_tables_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_create_trigger_if_not_exists           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sql</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ec17baec1e001f67334b0265d465fb50"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_delete_file_info" ref="ec17baec1e001f67334b0265d465fb50" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_db_delete_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="8ee7bfba83958b80f717a6ccbad2a84c"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_end_transaction" ref="8ee7bfba83958b80f717a6ccbad2a84c" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_end_transaction           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* int lms_db_finalize_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="e1df123e8d894a49f740ec6429af8159"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_get_file_info" ref="e1df123e8d894a49f740ec6429af8159" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_get_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="617b14b976ba1cde9fe639800f2eae71"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_get_files" ref="617b14b976ba1cde9fe639800f2eae71" args="(sqlite3_stmt *stmt, const char *path, int len) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int lms_db_get_files           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9353bf3cfbe2c0045023658597b0cf1d"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_insert_file_info" ref="9353bf3cfbe2c0045023658597b0cf1d" args="(sqlite3_stmt *stmt, struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_insert_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="ee78f418f0f3c9ead3023b1453c63556"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_reset_stmt" ref="ee78f418f0f3c9ead3023b1453c63556" args="(sqlite3_stmt *stmt) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3_stmt* int int lms_db_reset_stmt           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="0fa3bfe1fa3a01a4dd231b6f818122cb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_set_file_dtime" ref="0fa3bfe1fa3a01a4dd231b6f818122cb" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int lms_db_set_file_dtime           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="3dcf825514196befd0a4575e4afd0b58"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_update" ref="3dcf825514196befd0a4575e4afd0b58" args="(sqlite3 *db, const char *table, unsigned int current_version, unsigned int last_version, const lms_db_table_updater_t *updaters) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_table_update           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>current_version</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <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> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="455c0e5d62094b01fc935c5db8f07352"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_update_if_required" ref="455c0e5d62094b01fc935c5db8f07352" args="(sqlite3 *db, const char *table, unsigned int last_version, lms_db_table_updater_t *updaters) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_table_update_if_required           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>last_version</em>, </td>
+        </tr>
+        <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> *&nbsp;</td>
+          <td class="paramname"> <em>updaters</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="23cf7fff49641b39c017bdd076b112a7"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_version_get" ref="23cf7fff49641b39c017bdd076b112a7" args="(sqlite3 *db, const char *table) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_db_table_version_get           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="1c57f68c64069575a36252816929e335"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_table_version_set" ref="1c57f68c64069575a36252816929e335" args="(sqlite3 *db, const char *table, unsigned int version) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_db_table_version_set           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>table</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>version</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="9cce62321be32274de720ec946473eeb"></a><!-- doxytag: member="lightmediascanner_db_private.h::lms_db_update_file_info" ref="9cce62321be32274de720ec946473eeb" args="(sqlite3_stmt *stmt, const struct lms_file_info *finfo) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_update_file_info           </td>
+          <td>(</td>
+          <td class="paramtype">sqlite3_stmt *&nbsp;</td>
+          <td class="paramname"> <em>stmt</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.map
new file mode 100644 (file)
index 0000000..e7045d2
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.md5
new file mode 100644 (file)
index 0000000..a35505b
--- /dev/null
@@ -0,0 +1 @@
+597cf289a37dec2c079a7e40c848ec2c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png
new file mode 100644 (file)
index 0000000..de691e2
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_073c254ca7b4d3f42e1be1854bcc42a3_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.map
new file mode 100644 (file)
index 0000000..d94cf4b
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.md5
new file mode 100644 (file)
index 0000000..7804ae4
--- /dev/null
@@ -0,0 +1 @@
+4140a991699f501c103f1dd52e357650
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png
new file mode 100644 (file)
index 0000000..4149e94
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_08c34b5b1b6e927a696ff0ce66562f54_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.map
new file mode 100644 (file)
index 0000000..49aeb2f
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.md5
new file mode 100644 (file)
index 0000000..eda4808
--- /dev/null
@@ -0,0 +1 @@
+5a19337cd92bc81a6609fb3efc0944b8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png
new file mode 100644 (file)
index 0000000..c91b45c
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_09feca4fbfde33d5647cdd5cc2de6500_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.map b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.map
new file mode 100644 (file)
index 0000000..8045b86
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.md5
new file mode 100644 (file)
index 0000000..74dd657
--- /dev/null
@@ -0,0 +1 @@
+3cc06df5622a01305fd152e7404ce386
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png
new file mode 100644 (file)
index 0000000..68595e6
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_1cc8a80961a0febdd099a028f3da9c30_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.map
new file mode 100644 (file)
index 0000000..a62f463
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.md5
new file mode 100644 (file)
index 0000000..69eaa35
--- /dev/null
@@ -0,0 +1 @@
+48dd492320b5d2c740f331d4213ef1e6
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png
new file mode 100644 (file)
index 0000000..f22b93d
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_327d54a6dac083e356fd609298a0cbd5_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.map b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.map
new file mode 100644 (file)
index 0000000..44c61e3
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.md5
new file mode 100644 (file)
index 0000000..e293c4e
--- /dev/null
@@ -0,0 +1 @@
+42099300ab356ee9f37a5189393d9a29
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png
new file mode 100644 (file)
index 0000000..53a30cf
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_69eb9d9058d9432f7658f9adffb79ed6_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.map b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.map
new file mode 100644 (file)
index 0000000..49aeb2f
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.md5
new file mode 100644 (file)
index 0000000..25e6015
--- /dev/null
@@ -0,0 +1 @@
+11ab49ab26e02addb26e1495f2117883
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png
new file mode 100644 (file)
index 0000000..2144215
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_76941bdbbdb711fff821343e91c2cd97_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.map b/www/api/lightmediascanner__db__private_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..5c0b8aa
--- /dev/null
@@ -0,0 +1,7 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.md5 b/www/api/lightmediascanner__db__private_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..816631d
--- /dev/null
@@ -0,0 +1 @@
+022f4e74638a0b634545ff86621129c8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h__dep__incl.png b/www/api/lightmediascanner__db__private_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..a89e14c
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__db__private_8h__incl.map b/www/api/lightmediascanner__db__private_8h__incl.map
new file mode 100644 (file)
index 0000000..e8bbd5c
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h__incl.md5 b/www/api/lightmediascanner__db__private_8h__incl.md5
new file mode 100644 (file)
index 0000000..c221095
--- /dev/null
@@ -0,0 +1 @@
+1f30ce8e217e3bccc71953d3836e1a9f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h__incl.png b/www/api/lightmediascanner__db__private_8h__incl.png
new file mode 100644 (file)
index 0000000..ce5e2e7
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h__incl.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.map
new file mode 100644 (file)
index 0000000..ad44bfe
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.md5
new file mode 100644 (file)
index 0000000..41fed04
--- /dev/null
@@ -0,0 +1 @@
+70af470fb9b373dbdde441f9c228fdac
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png
new file mode 100644 (file)
index 0000000..434c52b
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_bf21f88ddbe28a8290d0df32af0f079c_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.map b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.map
new file mode 100644 (file)
index 0000000..c762020
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__db__common_8c.html#3f8fb8f31c1876b3579956b3d898cd00" title="sqlite3_clear_bindings" alt="" coords="177,5,319,32">
diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5 b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.md5
new file mode 100644 (file)
index 0000000..c6f38a0
--- /dev/null
@@ -0,0 +1 @@
+0559150039d6a3e46b15f46277f3053f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png
new file mode 100644 (file)
index 0000000..d7b9e79
Binary files /dev/null and b/www/api/lightmediascanner__db__private_8h_ee78f418f0f3c9ead3023b1453c63556_cgraph.png differ
diff --git a/www/api/lightmediascanner__db__video_8c-source.html b/www/api/lightmediascanner__db__video_8c-source.html
new file mode 100644 (file)
index 0000000..917251a
--- /dev/null
@@ -0,0 +1,236 @@
+<!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: src/lib/lightmediascanner_db_video.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;<a class="code" href="lightmediascanner__db_8h.html">lightmediascanner_db.h</a>&gt;</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 &lt;stdlib.h&gt;</span>
+<a name="l00004"></a>00004 <span class="preprocessor">#include &lt;stdio.h&gt;</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, &amp;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, &amp;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, &amp;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;
+<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="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="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>(&amp;_cache, db, &amp;p) == 0) {
+<a name="l00110"></a>00110         ldv = p;
+<a name="l00111"></a>00111         ldv-&gt;_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-&gt;_references = 1;
+<a name="l00125"></a>00125     ldv-&gt;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>(&amp;_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="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-&gt;_is_started)
+<a name="l00153"></a>00153         <span class="keywordflow">return</span> 0;
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155     ldv-&gt;insert = <a class="code" href="lightmediascanner__db__common_8c.html#5fddf47521f83929b0c90a481fa01c5b">lms_db_compile_stmt</a>(ldv-&gt;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-&gt;insert)
+<a name="l00158"></a>00158         <span class="keywordflow">return</span> -2;
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160     ldv-&gt;_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-&gt;_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-&gt;_references--;
+<a name="l00189"></a>00189     <span class="keywordflow">if</span> (ldv-&gt;_references &gt; 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-&gt;insert)
+<a name="l00193"></a>00193         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(ldv-&gt;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>(&amp;_cache, ldv-&gt;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="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-&gt;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-&gt;<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-&gt;<a class="code" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">title</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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-&gt;<a class="code" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">artist</a>.<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>, info-&gt;<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="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-&gt;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="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="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-&gt;<a class="code" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">id</a> &lt; 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__video_8c.html b/www/api/lightmediascanner__db__video_8c.html
new file mode 100644 (file)
index 0000000..9f3af11
--- /dev/null
@@ -0,0 +1,92 @@
+<!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: src/lib/lightmediascanner_db_video.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_db_video.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</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>
+<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>
+
+<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></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__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new</a> (sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g0ebc0dd37b1c9bcaf7741231a411ade2">lms_db_video_start</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__LMS__DB.html#g6be7c0922e76acc29542643424cfeac0">lms_db_video_free</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__db__video_8c.html#700adc9c25a70e5cd1d77812324b748e">lms_db_video_add</a> (<a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *ldv, struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *info)</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="700adc9c25a70e5cd1d77812324b748e"></a><!-- doxytag: member="lightmediascanner_db_video.c::lms_db_video_add" ref="700adc9c25a70e5cd1d77812324b748e" args="(lms_db_video_t *ldv, struct lms_video_info *info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_db_video_add           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__LMS__DB.html#gc2e0d2164f90e1ad3c78e05a4d341ec8">lms_db_video_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>ldv</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__video__info.html">lms_video_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Add video file to DB.<p>
+This is usually called from plugin's <b>parse()</b> callback.<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>ldv</em>&nbsp;</td><td>handle returned by <a class="el" href="group__LMS__DB.html#ga206178e1f883c1bf7a3281f982109b2">lms_db_video_new()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>video information to store.</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__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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__db__video_8c__incl.map b/www/api/lightmediascanner__db__video_8c__incl.map
new file mode 100644 (file)
index 0000000..ddf4717
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__db__video_8c__incl.md5 b/www/api/lightmediascanner__db__video_8c__incl.md5
new file mode 100644 (file)
index 0000000..3b5959f
--- /dev/null
@@ -0,0 +1 @@
+a70efaba1e5a3952a0630f7f668a914f
\ No newline at end of file
diff --git a/www/api/lightmediascanner__db__video_8c__incl.png b/www/api/lightmediascanner__db__video_8c__incl.png
new file mode 100644 (file)
index 0000000..eaade59
Binary files /dev/null and b/www/api/lightmediascanner__db__video_8c__incl.png differ
diff --git a/www/api/lightmediascanner__plugin_8h-source.html b/www/api/lightmediascanner__plugin_8h-source.html
new file mode 100644 (file)
index 0000000..8b5ec3e
--- /dev/null
@@ -0,0 +1,75 @@
+<!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: src/lib/lightmediascanner_plugin.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00123"></a>00123 <span class="preprocessor"></span>
+<a name="l00124"></a>00124 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>&gt;</span>
+<a name="l00125"></a>00125 <span class="preprocessor">#include &lt;<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>&gt;</span>
+<a name="l00126"></a>00126 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00127"></a>00127 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00131"></a>00131 <span class="preprocessor">#endif</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span>
+<a name="l00133"></a><a class="code" href="structlms__file__info.html">00133</a>     <span class="keyword">struct </span><a class="code" href="structlms__file__info.html">lms_file_info</a> {
+<a name="l00134"></a><a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">00134</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>; 
+<a name="l00135"></a><a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">00135</a>         <span class="keywordtype">int</span> <a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>; 
+<a name="l00136"></a><a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">00136</a>         <span class="keywordtype">int</span> <a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>; 
+<a name="l00137"></a><a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">00137</a>         int64_t <a class="code" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a>; 
+<a name="l00138"></a><a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">00138</a>         time_t <a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a>; 
+<a name="l00139"></a><a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">00139</a>         time_t <a class="code" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a>; 
+<a name="l00140"></a><a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">00140</a>         <span class="keywordtype">size_t</span> <a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a>; 
+<a name="l00141"></a>00141     };
+<a name="l00142"></a>00142 
+<a name="l00143"></a><a class="code" href="structlms__context.html">00143</a>     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> {
+<a name="l00144"></a><a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">00144</a>         sqlite3 *<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a>; 
+<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="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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__plugin_8h.html b/www/api/lightmediascanner__plugin_8h.html
new file mode 100644 (file)
index 0000000..49b4848
--- /dev/null
@@ -0,0 +1,189 @@
+<!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: src/lib/lightmediascanner_plugin.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_plugin.h File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&gt;</code><br>
+<code>#include &lt;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&gt;</code><br>
+<code>#include &lt;sqlite3.h&gt;</code><br>
+<code>#include &lt;sys/types.h&gt;</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>
+<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>
+
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html">lms_file_info</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html">lms_context</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__plugin.html">lms_plugin</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__plugin_8h.html#25abdf2375defcfc83bf95ef930fc739">_LIGHTMEDIASCANNER_PLUGIN_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(*)&nbsp;</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 int(*)&nbsp;</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(*)&nbsp;</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(*)&nbsp;</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(*)&nbsp;</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(*)&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="25abdf2375defcfc83bf95ef930fc739"></a><!-- doxytag: member="lightmediascanner_plugin.h::_LIGHTMEDIASCANNER_PLUGIN_H_" ref="25abdf2375defcfc83bf95ef930fc739" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_PLUGIN_H_&nbsp;&nbsp;&nbsp;1          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.map b/www/api/lightmediascanner__plugin_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..503e827
--- /dev/null
@@ -0,0 +1,11 @@
+<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">
diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.md5 b/www/api/lightmediascanner__plugin_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..d75c63a
--- /dev/null
@@ -0,0 +1 @@
+028a480f4edc1e7a571f0025d6804f4b
\ No newline at end of file
diff --git a/www/api/lightmediascanner__plugin_8h__dep__incl.png b/www/api/lightmediascanner__plugin_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..060df65
Binary files /dev/null and b/www/api/lightmediascanner__plugin_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__plugin_8h__incl.map b/www/api/lightmediascanner__plugin_8h__incl.map
new file mode 100644 (file)
index 0000000..b12a128
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__plugin_8h__incl.md5 b/www/api/lightmediascanner__plugin_8h__incl.md5
new file mode 100644 (file)
index 0000000..dbdd8a3
--- /dev/null
@@ -0,0 +1 @@
+d7a79bb71161929390f7080b91f24c07
\ No newline at end of file
diff --git a/www/api/lightmediascanner__plugin_8h__incl.png b/www/api/lightmediascanner__plugin_8h__incl.png
new file mode 100644 (file)
index 0000000..3d182bb
Binary files /dev/null and b/www/api/lightmediascanner__plugin_8h__incl.png differ
diff --git a/www/api/lightmediascanner__private_8h-source.html b/www/api/lightmediascanner__private_8h-source.html
new file mode 100644 (file)
index 0000000..48763ad
--- /dev/null
@@ -0,0 +1,95 @@
+<!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: src/lib/lightmediascanner_private.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00031"></a><a class="code" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">00031</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__plugin_8h.html">lightmediascanner_plugin.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__charset__conv_8h.html">lightmediascanner_charset_conv.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;poll.h&gt;</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;limits.h&gt;</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;sqlite3.h&gt;</span>
+<a name="l00041"></a>00041 
+<a name="l00042"></a><a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">00042</a> <span class="preprocessor">#define PATH_SIZE PATH_MAX</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a><a class="code" href="structfds.html">00044</a> <span class="keyword">struct </span><a class="code" href="structfds.html">fds</a> {
+<a name="l00045"></a><a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">00045</a>     <span class="keywordtype">int</span> <a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__private_8h.html b/www/api/lightmediascanner__private_8h.html
new file mode 100644 (file)
index 0000000..b2638ad
--- /dev/null
@@ -0,0 +1,494 @@
+<!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: src/lib/lightmediascanner_private.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_private.h File Reference</h1><code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__charset__conv_8h-source.html">lightmediascanner_charset_conv.h</a>&quot;</code><br>
+<code>#include &lt;sys/types.h&gt;</code><br>
+<code>#include &lt;poll.h&gt;</code><br>
+<code>#include &lt;limits.h&gt;</code><br>
+<code>#include &lt;sqlite3.h&gt;</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>
+<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>
+
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</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 &nbsp;</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 &nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html">lms</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#c9783e2105f145aa71f541e0825707ed">_LIGHTMEDIASCANNER_PRIVATE_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>&nbsp;&nbsp;&nbsp;PATH_MAX</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#a5952b7aae2fa795396a5a286c2ee4a4">lms_create_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#8c1aa0a9d9bb796db279caeb97e04eed">lms_close_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>) GNUC_NON_NULL(1)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6">lms_create_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#dd61370f42f0c32e3b9d5c86303c3c58">lms_restart_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#dd3853bb333e8bee167477933a058ae5">lms_finish_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*finish)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#028ef9d19863e8d0ebac1b84b1cb9174">lms_parsers_setup</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#2c1f40ac6080c682c2f71172cc76f7e0">lms_parsers_start</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__private_8h.html#74adcb264b3092f3ae9249de93f9130f">lms_parsers_finish</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db) GNUC_NON_NULL(1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int int int int int int int&nbsp;</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&nbsp;</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>
+<a class="anchor" name="c9783e2105f145aa71f541e0825707ed"></a><!-- doxytag: member="lightmediascanner_private.h::_LIGHTMEDIASCANNER_PRIVATE_H_" ref="c9783e2105f145aa71f541e0825707ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_PRIVATE_H_&nbsp;&nbsp;&nbsp;1          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_private.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="e78bf7e06bbba1c42b740fef55cf20f8"></a><!-- doxytag: member="lightmediascanner_private.h::PATH_SIZE" ref="e78bf7e06bbba1c42b740fef55cf20f8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define PATH_SIZE&nbsp;&nbsp;&nbsp;PATH_MAX          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="8c1aa0a9d9bb796db279caeb97e04eed"></a><!-- doxytag: member="lightmediascanner_private.h::lms_close_pipes" ref="8c1aa0a9d9bb796db279caeb97e04eed" args="(struct pinfo *pinfo) GNUC_NON_NULL(1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_close_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int lms_finish_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>finish</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<p>
+Referenced by <a class="el" href="lightmediascanner__process_8c-source.html#l00821">lms_process()</a>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parser_del_int           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int int lms_parsers_check_using           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="74adcb264b3092f3ae9249de93f9130f"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_finish" ref="74adcb264b3092f3ae9249de93f9130f" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int lms_parsers_finish           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int int int int lms_parsers_run           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="028ef9d19863e8d0ebac1b84b1cb9174"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_setup" ref="028ef9d19863e8d0ebac1b84b1cb9174" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int lms_parsers_setup           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="2c1f40ac6080c682c2f71172cc76f7e0"></a><!-- doxytag: member="lightmediascanner_private.h::lms_parsers_start" ref="2c1f40ac6080c682c2f71172cc76f7e0" args="(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int int int int lms_parsers_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</div>
+</div><p>
+<a class="anchor" name="dd61370f42f0c32e3b9d5c86303c3c58"></a><!-- doxytag: member="lightmediascanner_private.h::lms_restart_slave" ref="dd61370f42f0c32e3b9d5c86303c3c58" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int int lms_restart_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__private_8h__dep__incl.map b/www/api/lightmediascanner__private_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..177ed30
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__private_8h__dep__incl.md5 b/www/api/lightmediascanner__private_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..ec2b264
--- /dev/null
@@ -0,0 +1 @@
+4d417d15d050e1821629b1854b390812
\ No newline at end of file
diff --git a/www/api/lightmediascanner__private_8h__dep__incl.png b/www/api/lightmediascanner__private_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..3bc92ab
Binary files /dev/null and b/www/api/lightmediascanner__private_8h__dep__incl.png differ
diff --git a/www/api/lightmediascanner__private_8h__incl.map b/www/api/lightmediascanner__private_8h__incl.map
new file mode 100644 (file)
index 0000000..9dde33f
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/lightmediascanner__private_8h__incl.md5 b/www/api/lightmediascanner__private_8h__incl.md5
new file mode 100644 (file)
index 0000000..27e1e3a
--- /dev/null
@@ -0,0 +1 @@
+964dddbac26f6db485044d09051fa27b
\ No newline at end of file
diff --git a/www/api/lightmediascanner__private_8h__incl.png b/www/api/lightmediascanner__private_8h__incl.png
new file mode 100644 (file)
index 0000000..52d4d23
Binary files /dev/null and b/www/api/lightmediascanner__private_8h__incl.png differ
diff --git a/www/api/lightmediascanner__process_8c-source.html b/www/api/lightmediascanner__process_8c-source.html
new file mode 100644 (file)
index 0000000..b39919e
--- /dev/null
@@ -0,0 +1,886 @@
+<!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: src/lib/lightmediascanner_process.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a><a class="code" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">00025</a> <span class="preprocessor">#define _GNU_SOURCE</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#include &lt;sys/wait.h&gt;</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;dirent.h&gt;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;signal.h&gt;</span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;string.h&gt;</span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="lightmediascanner_8h.html">lightmediascanner.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__private_8h.html">lightmediascanner_private.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="lightmediascanner__db__private_8h.html">lightmediascanner_db_private.h</a>"</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="keyword">struct </span>db {
+<a name="l00041"></a>00041     sqlite3 *handle;
+<a name="l00042"></a>00042     sqlite3_stmt *transaction_begin;
+<a name="l00043"></a>00043     sqlite3_stmt *transaction_commit;
+<a name="l00044"></a>00044     sqlite3_stmt *get_file_info;
+<a name="l00045"></a>00045     sqlite3_stmt *insert_file_info;
+<a name="l00046"></a>00046     sqlite3_stmt *update_file_info;
+<a name="l00047"></a>00047     sqlite3_stmt *delete_file_info;
+<a name="l00048"></a>00048     sqlite3_stmt *set_file_dtime;
+<a name="l00049"></a>00049 };
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 <span class="comment">/***********************************************************************</span>
+<a name="l00052"></a>00052 <span class="comment"> * Master-Slave communication.</span>
+<a name="l00053"></a>00053 <span class="comment"> ***********************************************************************/</span>
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00056"></a>00056 _master_send_path(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master, <span class="keywordtype">int</span> plen, <span class="keywordtype">int</span> dlen, <span class="keyword">const</span> <span class="keywordtype">char</span> *p)
+<a name="l00057"></a>00057 {
+<a name="l00058"></a>00058     <span class="keywordtype">int</span> lengths[2];
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060     lengths[0] = plen;
+<a name="l00061"></a>00061     lengths[1] = dlen;
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, lengths, <span class="keyword">sizeof</span>(lengths)) &lt; 0) {
+<a name="l00064"></a>00064         perror(<span class="stringliteral">"write"</span>);
+<a name="l00065"></a>00065         <span class="keywordflow">return</span> -1;
+<a name="l00066"></a>00066     }
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, p, plen) &lt; 0) {
+<a name="l00069"></a>00069         perror(<span class="stringliteral">"write"</span>);
+<a name="l00070"></a>00070         <span class="keywordflow">return</span> -1;
+<a name="l00071"></a>00071     }
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073     <span class="keywordflow">return</span> 0;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00077"></a>00077 _master_send_finish(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *master)
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079     <span class="keyword">const</span> <span class="keywordtype">int</span> lengths[2] = {-1, -1};
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081     <span class="keywordflow">if</span> (write(master-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, lengths, <span class="keyword">sizeof</span>(lengths)) &lt; 0) {
+<a name="l00082"></a>00082         perror(<span class="stringliteral">"write"</span>);
+<a name="l00083"></a>00083         <span class="keywordflow">return</span> -1;
+<a name="l00084"></a>00084     }
+<a name="l00085"></a>00085     <span class="keywordflow">return</span> 0;
+<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 _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="l00090"></a>00090 {
+<a name="l00091"></a>00091     <span class="keywordtype">int</span> r;
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093     r = poll(pfd, 1, timeout);
+<a name="l00094"></a>00094     <span class="keywordflow">if</span> (r &lt; 0) {
+<a name="l00095"></a>00095         perror(<span class="stringliteral">"poll"</span>);
+<a name="l00096"></a>00096         <span class="keywordflow">return</span> -1;
+<a name="l00097"></a>00097     }
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099     <span class="keywordflow">if</span> (r == 0)
+<a name="l00100"></a>00100         <span class="keywordflow">return</span> 1;
+<a name="l00101"></a>00101 
+<a name="l00102"></a>00102     <span class="keywordflow">if</span> (read(master-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, reply, <span class="keyword">sizeof</span>(*reply)) != <span class="keyword">sizeof</span>(*reply)) {
+<a name="l00103"></a>00103         perror(<span class="stringliteral">"read"</span>);
+<a name="l00104"></a>00104         <span class="keywordflow">return</span> -2;
+<a name="l00105"></a>00105     }
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107     <span class="keywordflow">return</span> 0;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00111"></a>00111 _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="l00112"></a>00112 {
+<a name="l00113"></a>00113     <span class="keywordflow">if</span> (write(slave-&gt;<a class="code" href="structfds.html#d13e19697072e306771103286a8316d0">w</a>, &amp;reply, <span class="keyword">sizeof</span>(reply)) == 0) {
+<a name="l00114"></a>00114         perror(<span class="stringliteral">"write"</span>);
+<a name="l00115"></a>00115         <span class="keywordflow">return</span> -1;
+<a name="l00116"></a>00116     }
+<a name="l00117"></a>00117     <span class="keywordflow">return</span> 0;
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00121"></a>00121 _slave_recv_path(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structfds.html">fds</a> *slave, <span class="keywordtype">int</span> *plen, <span class="keywordtype">int</span> *dlen, <span class="keywordtype">char</span> *path)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123     <span class="keywordtype">int</span> lengths[2], r;
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, lengths, <span class="keyword">sizeof</span>(lengths));
+<a name="l00126"></a>00126     <span class="keywordflow">if</span> (r != <span class="keyword">sizeof</span>(lengths)) {
+<a name="l00127"></a>00127         perror(<span class="stringliteral">"read"</span>);
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> -1;
+<a name="l00129"></a>00129     }
+<a name="l00130"></a>00130     *plen = lengths[0];
+<a name="l00131"></a>00131     *dlen = lengths[1];
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (*plen == -1)
+<a name="l00134"></a>00134         <span class="keywordflow">return</span> 0;
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (*plen &gt; <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>) {
+<a name="l00137"></a>00137         fprintf(stderr, <span class="stringliteral">"ERROR: path too long (%d/%d)\n"</span>, *plen, <a class="code" href="lightmediascanner__private_8h.html#e78bf7e06bbba1c42b740fef55cf20f8">PATH_SIZE</a>);
+<a name="l00138"></a>00138         <span class="keywordflow">return</span> -2;
+<a name="l00139"></a>00139     }
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141     r = read(slave-&gt;<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>, path, *plen);
+<a name="l00142"></a>00142     <span class="keywordflow">if</span> (r != *plen) {
+<a name="l00143"></a>00143         fprintf(stderr, <span class="stringliteral">"ERROR: could not read whole path %d/%d\n"</span>, r, *plen);
+<a name="l00144"></a>00144         <span class="keywordflow">return</span> -3;
+<a name="l00145"></a>00145     }
+<a name="l00146"></a>00146 
+<a name="l00147"></a>00147     path[*plen] = 0;
+<a name="l00148"></a>00148     <span class="keywordflow">return</span> 0;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="comment">/***********************************************************************</span>
+<a name="l00153"></a>00153 <span class="comment"> * Slave-side.</span>
+<a name="l00154"></a>00154 <span class="comment"> ***********************************************************************/</span>
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00157"></a>00157 _db_compile_all_stmts(<span class="keyword">struct</span> db *db)
+<a name="l00158"></a>00158 {
+<a name="l00159"></a>00159     sqlite3 *handle;
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161     handle = db-&gt;handle;
+<a name="l00162"></a>00162     db-&gt;transaction_begin = <a class="code" href="lightmediascanner__db__common_8c.html#1787fdaf148358c7a518e91dfd871ca1">lms_db_compile_stmt_begin_transaction</a>(handle);
+<a name="l00163"></a>00163     <span class="keywordflow">if</span> (!db-&gt;transaction_begin)
+<a name="l00164"></a>00164         <span class="keywordflow">return</span> -1;
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166     db-&gt;transaction_commit = <a class="code" href="lightmediascanner__db__common_8c.html#bff1aa6077215f3d70d4d5b1a9b7a498">lms_db_compile_stmt_end_transaction</a>(handle);
+<a name="l00167"></a>00167     <span class="keywordflow">if</span> (!db-&gt;transaction_commit)
+<a name="l00168"></a>00168         <span class="keywordflow">return</span> -2;
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170     db-&gt;get_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#b00a624bc01da9b796f7bc6e1d507cf8">lms_db_compile_stmt_get_file_info</a>(handle);
+<a name="l00171"></a>00171     <span class="keywordflow">if</span> (!db-&gt;get_file_info)
+<a name="l00172"></a>00172         <span class="keywordflow">return</span> -4;
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174     db-&gt;insert_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#9a5886e755eb428ac811956144eee0dc">lms_db_compile_stmt_insert_file_info</a>(handle);
+<a name="l00175"></a>00175     <span class="keywordflow">if</span> (!db-&gt;insert_file_info)
+<a name="l00176"></a>00176         <span class="keywordflow">return</span> -5;
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178     db-&gt;update_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#1e6e76cfa9d6faa3c3b8035004eff1a0">lms_db_compile_stmt_update_file_info</a>(handle);
+<a name="l00179"></a>00179     <span class="keywordflow">if</span> (!db-&gt;update_file_info)
+<a name="l00180"></a>00180         <span class="keywordflow">return</span> -6;
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182     db-&gt;delete_file_info = <a class="code" href="lightmediascanner__db__common_8c.html#559925f8e4d5bf61d1bcf44844a95699">lms_db_compile_stmt_delete_file_info</a>(handle);
+<a name="l00183"></a>00183     <span class="keywordflow">if</span> (!db-&gt;delete_file_info)
+<a name="l00184"></a>00184         <span class="keywordflow">return</span> -6;
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186     db-&gt;set_file_dtime = <a class="code" href="lightmediascanner__db__common_8c.html#1b6950ca9e548670a4cb7fd0ec5220a8">lms_db_compile_stmt_set_file_dtime</a>(handle);
+<a name="l00187"></a>00187     <span class="keywordflow">if</span> (!db-&gt;set_file_dtime)
+<a name="l00188"></a>00188         <span class="keywordflow">return</span> -7;
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190     <span class="keywordflow">return</span> 0;
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193 <span class="keyword">static</span> <span class="keyword">struct </span>db *
+<a name="l00194"></a>00194 _db_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *db_path)
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196     <span class="keyword">struct </span>db *db;
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198     db = calloc(1, <span class="keyword">sizeof</span>(*db));
+<a name="l00199"></a>00199     <span class="keywordflow">if</span> (!db) {
+<a name="l00200"></a>00200         perror(<span class="stringliteral">"calloc"</span>);
+<a name="l00201"></a>00201         <span class="keywordflow">return</span> NULL;
+<a name="l00202"></a>00202     }
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     <span class="keywordflow">if</span> (sqlite3_open(db_path, &amp;db-&gt;handle) != SQLITE_OK) {
+<a name="l00205"></a>00205         fprintf(stderr, <span class="stringliteral">"ERROR: could not open DB \"%s\": %s\n"</span>,
+<a name="l00206"></a>00206                 db_path, sqlite3_errmsg(db-&gt;handle));
+<a name="l00207"></a>00207         <span class="keywordflow">goto</span> error;
+<a name="l00208"></a>00208     }
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210     <span class="keywordflow">if</span> (<a class="code" href="lightmediascanner__db__common_8c.html#3798a46baaedc4d466879865456acc94">lms_db_create_core_tables_if_required</a>(db-&gt;handle) != 0) {
+<a name="l00211"></a>00211         fprintf(stderr, <span class="stringliteral">"ERROR: could not setup tables and indexes.\n"</span>);
+<a name="l00212"></a>00212         <span class="keywordflow">goto</span> error;
+<a name="l00213"></a>00213     }
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     <span class="keywordflow">return</span> db;
+<a name="l00216"></a>00216 
+<a name="l00217"></a>00217   error:
+<a name="l00218"></a>00218     sqlite3_close(db-&gt;handle);
+<a name="l00219"></a>00219     free(db);
+<a name="l00220"></a>00220     <span class="keywordflow">return</span> NULL;
+<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_close(<span class="keyword">struct</span> db *db)
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226     <span class="keywordflow">if</span> (db-&gt;transaction_begin)
+<a name="l00227"></a>00227         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_begin, <span class="stringliteral">"transaction_begin"</span>);
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229     <span class="keywordflow">if</span> (db-&gt;transaction_commit)
+<a name="l00230"></a>00230         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;transaction_commit, <span class="stringliteral">"transaction_commit"</span>);
+<a name="l00231"></a>00231 
+<a name="l00232"></a>00232     <span class="keywordflow">if</span> (db-&gt;get_file_info)
+<a name="l00233"></a>00233         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;get_file_info, <span class="stringliteral">"get_file_info"</span>);
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235     <span class="keywordflow">if</span> (db-&gt;insert_file_info)
+<a name="l00236"></a>00236         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;insert_file_info, <span class="stringliteral">"insert_file_info"</span>);
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (db-&gt;update_file_info)
+<a name="l00239"></a>00239         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;update_file_info, <span class="stringliteral">"update_file_info"</span>);
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     <span class="keywordflow">if</span> (db-&gt;delete_file_info)
+<a name="l00242"></a>00242         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;delete_file_info, <span class="stringliteral">"delete_file_info"</span>);
+<a name="l00243"></a>00243 
+<a name="l00244"></a>00244     <span class="keywordflow">if</span> (db-&gt;set_file_dtime)
+<a name="l00245"></a>00245         <a class="code" href="lightmediascanner__db__common_8c.html#32110a4825e598ca6df329f55b0b62b5">lms_db_finalize_stmt</a>(db-&gt;set_file_dtime, <span class="stringliteral">"set_file_dtime"</span>);
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247     <span class="keywordflow">if</span> (sqlite3_close(db-&gt;handle) != SQLITE_OK) {
+<a name="l00248"></a>00248         fprintf(stderr, <span class="stringliteral">"ERROR: clould not close DB: %s\n"</span>,
+<a name="l00249"></a>00249                 sqlite3_errmsg(db-&gt;handle));
+<a name="l00250"></a>00250         <span class="keywordflow">return</span> -1;
+<a name="l00251"></a>00251     }
+<a name="l00252"></a>00252     free(db);
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254     <span class="keywordflow">return</span> 0;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00258"></a>00258 _retrieve_file_status(<span class="keyword">struct</span> db *db, <span class="keyword">struct</span> <a class="code" href="structlms__file__info.html">lms_file_info</a> *finfo)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260     <span class="keyword">struct </span>stat st;
+<a name="l00261"></a>00261     <span class="keywordtype">int</span> r;
+<a name="l00262"></a>00262 
+<a name="l00263"></a>00263     <span class="keywordflow">if</span> (stat(finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, &amp;st) != 0) {
+<a name="l00264"></a>00264         perror(<span class="stringliteral">"stat"</span>);
+<a name="l00265"></a>00265         <span class="keywordflow">return</span> -1;
+<a name="l00266"></a>00266     }
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268     r = <a class="code" href="lightmediascanner__db__common_8c.html#c0b7cf0b2eb0f55fbf8a4103bc9569d1">lms_db_get_file_info</a>(db-&gt;get_file_info, finfo);
+<a name="l00269"></a>00269     <span class="keywordflow">if</span> (r == 0) {
+<a name="l00270"></a>00270         <span class="keywordflow">if</span> (st.st_mtime &lt;= finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> &amp;&amp; finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> == st.st_size)
+<a name="l00271"></a>00271             <span class="keywordflow">return</span> 0;
+<a name="l00272"></a>00272         <span class="keywordflow">else</span> {
+<a name="l00273"></a>00273             finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st.st_mtime;
+<a name="l00274"></a>00274             finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st.st_size;
+<a name="l00275"></a>00275             <span class="keywordflow">return</span> 1;
+<a name="l00276"></a>00276         }
+<a name="l00277"></a>00277     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r == 1) {
+<a name="l00278"></a>00278         finfo-&gt;<a class="code" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a> = st.st_mtime;
+<a name="l00279"></a>00279         finfo-&gt;<a class="code" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</a> = st.st_size;
+<a name="l00280"></a>00280         <span class="keywordflow">return</span> 1;
+<a name="l00281"></a>00281     } <span class="keywordflow">else</span>
+<a name="l00282"></a>00282         <span class="keywordflow">return</span> -2;
+<a name="l00283"></a>00283 }
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00286"></a>00286 _ctxt_init(<span class="keyword">struct</span> <a class="code" href="structlms__context.html">lms_context</a> *ctxt, <span class="keyword">const</span> <a class="code" href="structlms.html">lms_t</a> *<a class="code" href="structlms.html">lms</a>, sqlite3 *db)
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288     ctxt-&gt;<a class="code" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</a> = lms-&gt;<a class="code" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a>;
+<a name="l00289"></a>00289     ctxt-&gt;<a class="code" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a> = db;
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292 <span class="keywordtype">int</span>
+<a name="l00293"></a><a class="code" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">00293</a> <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 name="l00294"></a>00294 {
+<a name="l00295"></a>00295     <span class="keyword">struct </span><a class="code" href="structlms__context.html">lms_context</a> ctxt;
+<a name="l00296"></a>00296     <span class="keywordtype">int</span> i;
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00301"></a>00301         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00302"></a>00302         <span class="keywordtype">int</span> r;
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00305"></a>00305         r = plugin-&gt;<a class="code" href="structlms__plugin.html#aeff2e030242ffdf3bdc512a5ef6cbec">setup</a>(plugin, &amp;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-&gt;name, r);
+<a name="l00309"></a>00309             plugin-&gt;finish(plugin, &amp;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="l00313"></a>00313     }
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315     <span class="keywordflow">return</span> 0;
+<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="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="l00323"></a>00323 
+<a name="l00324"></a>00324     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00325"></a>00325 
+<a name="l00326"></a>00326     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00327"></a>00327         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00328"></a>00328         <span class="keywordtype">int</span> r;
+<a name="l00329"></a>00329 
+<a name="l00330"></a>00330         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00331"></a>00331         r = plugin-&gt;<a class="code" href="structlms__plugin.html#b3dffd208749a53ad2eb5ffb6d1b7d07">start</a>(plugin, &amp;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-&gt;name, r);
+<a name="l00335"></a>00335             plugin-&gt;finish(plugin, &amp;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="l00339"></a>00339     }
+<a name="l00340"></a>00340 
+<a name="l00341"></a>00341     <span class="keywordflow">return</span> 0;
+<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="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="l00349"></a>00349 
+<a name="l00350"></a>00350     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00351"></a>00351 
+<a name="l00352"></a>00352     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00353"></a>00353         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00354"></a>00354         <span class="keywordtype">int</span> r;
+<a name="l00355"></a>00355 
+<a name="l00356"></a>00356         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00357"></a>00357         r = plugin-&gt;<a class="code" href="structlms__plugin.html#839d286e12caa0711f3987adb4b803f0">finish</a>(plugin, &amp;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-&gt;name, r);
+<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__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">00367</a> <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 name="l00368"></a>00368 {
+<a name="l00369"></a>00369     <span class="keywordtype">int</span> used, i;
+<a name="l00370"></a>00370 
+<a name="l00371"></a>00371     used = 0;
+<a name="l00372"></a>00372     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00373"></a>00373         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00374"></a>00374         <span class="keywordtype">void</span> *r;
+<a name="l00375"></a>00375 
+<a name="l00376"></a>00376         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00377"></a>00377         r = plugin-&gt;<a class="code" href="structlms__plugin.html#5b532e6e50911f02fd9e123489c62a0f">match</a>(plugin, finfo-&gt;<a class="code" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a>, finfo-&gt;<a class="code" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a>);
+<a name="l00378"></a>00378         parser_match[i] = r;
+<a name="l00379"></a>00379         <span class="keywordflow">if</span> (r)
+<a name="l00380"></a>00380             used = 1;
+<a name="l00381"></a>00381     }
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383     <span class="keywordflow">return</span> used;
+<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="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="l00391"></a>00391 
+<a name="l00392"></a>00392     _ctxt_init(&amp;ctxt, lms, db);
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394     failed = 0;
+<a name="l00395"></a>00395     available = 0;
+<a name="l00396"></a>00396     <span class="keywordflow">for</span> (i = 0; i &lt; lms-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a>; i++) {
+<a name="l00397"></a>00397         <a class="code" href="structlms__plugin.html">lms_plugin_t</a> *plugin;
+<a name="l00398"></a>00398 
+<a name="l00399"></a>00399         plugin = lms-&gt;<a class="code" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">parsers</a>[i].<a class="code" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a>;
+<a name="l00400"></a>00400         <span class="keywordflow">if</span> (parser_match[i]) {
+<a name="l00401"></a>00401             <span class="keywordtype">int</span> r;
+<a name="l00402"></a>00402 
+<a name="l00403"></a>00403             available++;
+<a name="l00404"></a>00404             r = plugin-&gt;<a class="code" href="structlms__plugin.html#0d3361b489eb7c7c4ecc7917c0390b9e">parse</a>(plugin, &amp;ctxt, finfo, parser_match[i]);
+<a name="l00405"></a>00405             <span class="keywordflow">if</span> (r != 0)
+<a name="l00406"></a>00406                 failed++;
+<a name="l00407"></a>00407         }
+<a name="l00408"></a>00408     }
+<a name="l00409"></a>00409 
+<a name="l00410"></a>00410     <span class="keywordflow">if</span> (!failed)
+<a name="l00411"></a>00411         <span class="keywordflow">return</span> 0;
+<a name="l00412"></a>00412     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (failed == available)
+<a name="l00413"></a>00413         <span class="keywordflow">return</span> -1;
+<a name="l00414"></a>00414     <span class="keywordflow">else</span>
+<a name="l00415"></a>00415         <span class="keywordflow">return</span> 1; <span class="comment">/* non critical */</span>
+<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="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-&gt;<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-&gt;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-&gt;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-&gt;<a class="code" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">n_parsers</a> &lt; 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-&gt;<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-&gt;transaction_begin);
+<a name="l00462"></a>00462 
+<a name="l00463"></a>00463     <span class="keywordflow">while</span> (((r = _slave_recv_path(fds, &amp;len, &amp;base, path)) == 0) &amp;&amp; len &gt; 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="l00470"></a>00470 
+<a name="l00471"></a>00471         r = _retrieve_file_status(db, &amp;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-&gt;set_file_dtime, &amp;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 &lt; 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, &amp;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> &gt; 0)
+<a name="l00489"></a>00489             r = <a class="code" href="lightmediascanner__db__common_8c.html#0f727cd41bbb90af2e08b3ee7ca76de9">lms_db_update_file_info</a>(db-&gt;update_file_info, &amp;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-&gt;insert_file_info, &amp;finfo);
+<a name="l00492"></a>00492         <span class="keywordflow">if</span> (r &lt; 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="l00496"></a>00496 
+<a name="l00497"></a>00497         r = <a class="code" href="lightmediascanner__private_8h.html#f61d9ef6ae2e576705bbd445db919e6c">lms_parsers_run</a>(lms, db-&gt;handle, parser_match, &amp;finfo);
+<a name="l00498"></a>00498         <span class="keywordflow">if</span> (r &lt; 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-&gt;delete_file_info, &amp;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 &gt; lms-&gt;<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-&gt;transaction_commit);
+<a name="l00509"></a>00509             <a class="code" href="lightmediascanner__db__common_8c.html#5ff807216285c93325ffaf33361dd6fc">lms_db_begin_transaction</a>(db-&gt;transaction_begin);
+<a name="l00510"></a>00510             counter = 0;
+<a name="l00511"></a>00511         }
+<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-&gt;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-&gt;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)) &gt; 0) {
+<a name="l00534"></a>00534         <span class="keywordflow">if</span> (pfd-&gt;revents &amp; (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-&gt;revents &amp; POLLIN) {
+<a name="l00537"></a>00537             <span class="keywordtype">char</span> c;
+<a name="l00538"></a>00538 
+<a name="l00539"></a>00539             read(pfd-&gt;fd, &amp;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-&gt;<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-&gt;<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(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00571"></a>00571     r += _close_fds(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#62bbc538af7f9e1d6aa9073458d5cc52">slave</a>);
+<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="l00578"></a>00578 {
+<a name="l00579"></a>00579     <span class="keywordtype">int</span> fds[2];
+<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<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-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.fd = pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>.<a class="code" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a>;
+<a name="l00598"></a>00598     pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>.events = POLLIN;
+<a name="l00599"></a>00599 
+<a name="l00600"></a>00600     <span class="keywordflow">return</span> 0;
+<a name="l00601"></a>00601 }
+<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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> = fork();
+<a name="l00609"></a>00609     <span class="keywordflow">if</span> (pinfo-&gt;<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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> &gt; 0)
+<a name="l00615"></a>00615         <span class="keywordflow">return</span> 0;
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617     _close_fds(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>);
+<a name="l00618"></a>00618     nice(19);
+<a name="l00619"></a>00619     r = work(pinfo-&gt;<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>, &amp;pinfo-&gt;<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-&gt;<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, &amp;status, 0);
+<a name="l00632"></a>00632     <span class="keywordflow">if</span> (r &gt; -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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a> &lt;= 0)
+<a name="l00646"></a>00646         <span class="keywordflow">return</span> 0;
+<a name="l00647"></a>00647 
+<a name="l00648"></a>00648     r = finish(&amp;pinfo-&gt;<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-&gt;<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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, SIGKILL);
+<a name="l00653"></a>00653         <span class="keywordflow">if</span> (r &lt; 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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>);
+<a name="l00657"></a>00657     }
+<a name="l00658"></a>00658     pinfo-&gt;<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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &amp;status, WNOHANG) &gt; 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-&gt;<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-&gt;<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-&gt;<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-&gt;<a class="code" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</a>, &amp;status, 0) &lt; 0)
+<a name="l00695"></a>00695         perror(<span class="stringliteral">"waitpid"</span>);
+<a name="l00696"></a>00696 
+<a name="l00697"></a>00697     _consume_garbage(&amp;pinfo-&gt;<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 &gt;= <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 &lt; 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(&amp;pinfo-&gt;<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(&amp;pinfo-&gt;<a class="code" href="structpinfo.html#246dfd29e81101866ccb01cc70224156">master</a>, &amp;pinfo-&gt;<a class="code" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">poll</a>, &amp;reply,
+<a name="l00736"></a>00736                            pinfo-&gt;<a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<a class="code" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a>);
+<a name="l00737"></a>00737     <span class="keywordflow">if</span> (r &lt; 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-&gt;<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 &lt; 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) &lt;&lt; 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="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 &lt; 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 &gt;= <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-&gt;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-&gt;d_type == DT_REG) {
+<a name="l00785"></a>00785             <span class="keywordflow">if</span> (_process_file(pinfo, new_len, path, de-&gt;d_name) &lt; 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-&gt;d_type == DT_DIR || de-&gt;d_type == DT_UNKNOWN) {
+<a name="l00794"></a>00794             <span class="keywordflow">if</span> (_process_dir(pinfo, new_len, path, de-&gt;d_name) &lt; 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="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>-&gt;<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>-&gt;<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>(&amp;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>(&amp;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 &gt;= 0 &amp;&amp; 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="l00877"></a>00877 
+<a name="l00878"></a>00878     <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<a class="code" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_processing</a> = 1;
+<a name="l00879"></a>00879     r = _process_dir(&amp;pinfo, len, path, bname);
+<a name="l00880"></a>00880     <a class="code" href="structpinfo.html#9958e1d447ffadf40c871a6cdaa86b4c">lms</a>-&gt;<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>(&amp;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>(&amp;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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__process_8c.html b/www/api/lightmediascanner__process_8c.html
new file mode 100644 (file)
index 0000000..7340523
--- /dev/null
@@ -0,0 +1,498 @@
+<!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: src/lib/lightmediascanner_process.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_process.c File Reference</h1><code>#include &lt;sys/wait.h&gt;</code><br>
+<code>#include &lt;sys/stat.h&gt;</code><br>
+<code>#include &lt;unistd.h&gt;</code><br>
+<code>#include &lt;dirent.h&gt;</code><br>
+<code>#include &lt;signal.h&gt;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;string.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner_8h-source.html">lightmediascanner.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&quot;</code><br>
+<code>#include &quot;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&quot;</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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#369266c24eacffb87046522897a570d5">_GNU_SOURCE</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c321bebfc5c24cbbac30031202c460e9">lms_parsers_setup</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#6e02f78f026b2ad282184476dca13e45">lms_parsers_start</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#d002464442b08826a1da920bdf4957b7">lms_parsers_finish</a> (<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, sqlite3 *db)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#f2e95cea50ce24774d2f5ed7d8c8f41c">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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#4ab78dfbf29822d91472d18dd7424e77">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)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#6b68b00b80a98a178c7d69b962267a11">lms_close_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#c2e1320b9770e0f522451b13f82efc2b">lms_create_pipes</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#e92fe8fe90d93d5ad9a42387a4b2fc6e">lms_create_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#9f980636d608c6af99477ba37e196050">lms_finish_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*finish)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__process_8c.html#9bf510645947b478dab39f633bbd35f3">lms_restart_slave</a> (struct <a class="el" href="structpinfo.html">pinfo</a> *<a class="el" href="structpinfo.html">pinfo</a>, int(*work)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="369266c24eacffb87046522897a570d5"></a><!-- doxytag: member="lightmediascanner_process.c::_GNU_SOURCE" ref="369266c24eacffb87046522897a570d5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _GNU_SOURCE          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="6b68b00b80a98a178c7d69b962267a11"></a><!-- doxytag: member="lightmediascanner_process.c::lms_close_pipes" ref="6b68b00b80a98a178c7d69b962267a11" args="(struct pinfo *pinfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_close_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="c2e1320b9770e0f522451b13f82efc2b"></a><!-- doxytag: member="lightmediascanner_process.c::lms_create_pipes" ref="c2e1320b9770e0f522451b13f82efc2b" args="(struct pinfo *pinfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_pipes           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_create_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="9f980636d608c6af99477ba37e196050"></a><!-- doxytag: member="lightmediascanner_process.c::lms_finish_slave" ref="9f980636d608c6af99477ba37e196050" args="(struct pinfo *pinfo, int(*finish)(const struct fds *fds))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_finish_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(const struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>finish</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_check_using           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_finish           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_run           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void **&nbsp;</td>
+          <td class="paramname"> <em>parser_match</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">struct <a class="el" href="structlms__file__info.html">lms_file_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>finfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_setup           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="6e02f78f026b2ad282184476dca13e45"></a><!-- doxytag: member="lightmediascanner_process.c::lms_parsers_start" ref="6e02f78f026b2ad282184476dca13e45" args="(lms_t *lms, sqlite3 *db)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_parsers_start           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">sqlite3 *&nbsp;</td>
+          <td class="paramname"> <em>db</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</div>
+</div><p>
+<a class="anchor" name="c2f07fb73717514237862c98dbf023b2"></a><!-- doxytag: member="lightmediascanner_process.c::lms_process" ref="c2f07fb73717514237862c98dbf023b2" args="(lms_t *lms, const char *top_path)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_process           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>lms</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>top_path</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Process the given directory.<p>
+This will add or update media found in the given directory or its children.<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>&nbsp;</td><td>previously allocated Light Media Scanner instance. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>top_path</em>&nbsp;</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#l00821">821</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#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>.
+<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>
+</div><p>
+<a class="anchor" name="9bf510645947b478dab39f633bbd35f3"></a><!-- doxytag: member="lightmediascanner_process.c::lms_restart_slave" ref="9bf510645947b478dab39f633bbd35f3" args="(struct pinfo *pinfo, int(*work)(lms_t *lms, struct fds *fds))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_restart_slave           </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structpinfo.html">pinfo</a> *&nbsp;</td>
+          <td class="paramname"> <em>pinfo</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int(*)(<a class="el" href="structlms.html">lms_t</a> *<a class="el" href="structlms.html">lms</a>, struct <a class="el" href="structfds.html">fds</a> *<a class="el" href="structfds.html">fds</a>)&nbsp;</td>
+          <td class="paramname"> <em>work</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>
+<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>
+
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.map
new file mode 100644 (file)
index 0000000..9854bea
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="169,5,292,32">
diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5 b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.md5
new file mode 100644 (file)
index 0000000..5a0c040
--- /dev/null
@@ -0,0 +1 @@
+62762b100835173e3e06e968fae996a1
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png
new file mode 100644 (file)
index 0000000..de3d938
Binary files /dev/null and b/www/api/lightmediascanner__process_8c_6e02f78f026b2ad282184476dca13e45_cgraph.png differ
diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.map b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.map
new file mode 100644 (file)
index 0000000..d14f932
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__private_8h.html#439b3c62e96d472bdb2125a0a04d4fa6" title="lms_create_slave" alt="" coords="169,5,281,32">
diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5 b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.md5
new file mode 100644 (file)
index 0000000..e3f941e
--- /dev/null
@@ -0,0 +1 @@
+e55f1e94a5d2e367b6febb666c14335c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png
new file mode 100644 (file)
index 0000000..2c19cb5
Binary files /dev/null and b/www/api/lightmediascanner__process_8c_9bf510645947b478dab39f633bbd35f3_cgraph.png differ
diff --git a/www/api/lightmediascanner__process_8c__incl.map b/www/api/lightmediascanner__process_8c__incl.map
new file mode 100644 (file)
index 0000000..28ced31
--- /dev/null
@@ -0,0 +1,5 @@
+<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">
diff --git a/www/api/lightmediascanner__process_8c__incl.md5 b/www/api/lightmediascanner__process_8c__incl.md5
new file mode 100644 (file)
index 0000000..a1902b7
--- /dev/null
@@ -0,0 +1 @@
+691954d091cc4954a262a036d6b1422d
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c__incl.png b/www/api/lightmediascanner__process_8c__incl.png
new file mode 100644 (file)
index 0000000..d27adfd
Binary files /dev/null and b/www/api/lightmediascanner__process_8c__incl.png differ
diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.map b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.map
new file mode 100644 (file)
index 0000000..a8a5d5d
--- /dev/null
@@ -0,0 +1,4 @@
+<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">
diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5 b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.md5
new file mode 100644 (file)
index 0000000..ca91093
--- /dev/null
@@ -0,0 +1 @@
+e52682bdf61c6444457aae1406ddbca3
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png
new file mode 100644 (file)
index 0000000..218605f
Binary files /dev/null and b/www/api/lightmediascanner__process_8c_c2f07fb73717514237862c98dbf023b2_cgraph.png differ
diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.map
new file mode 100644 (file)
index 0000000..788d5ff
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner_8c.html#e6ccb942742cf65cc1cf866aceb4bddf" title="lms_parser_del_int" alt="" coords="175,5,297,32">
diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5 b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.md5
new file mode 100644 (file)
index 0000000..71c0a57
--- /dev/null
@@ -0,0 +1 @@
+e0c9d5b36404f6c62bb378cdae88cbbd
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png
new file mode 100644 (file)
index 0000000..9967cd1
Binary files /dev/null and b/www/api/lightmediascanner__process_8c_c321bebfc5c24cbbac30031202c460e9_cgraph.png differ
diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.map
new file mode 100644 (file)
index 0000000..9b56ab4
--- /dev/null
@@ -0,0 +1,2 @@
+<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">
diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5 b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.md5
new file mode 100644 (file)
index 0000000..12d2c8c
--- /dev/null
@@ -0,0 +1 @@
+fa6cbabb16bc428f9986980da76a441c
\ No newline at end of file
diff --git a/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png
new file mode 100644 (file)
index 0000000..5d48330
Binary files /dev/null and b/www/api/lightmediascanner__process_8c_e92fe8fe90d93d5ad9a42387a4b2fc6e_cgraph.png differ
diff --git a/www/api/lightmediascanner__utils_8c-source.html b/www/api/lightmediascanner__utils_8c-source.html
new file mode 100644 (file)
index 0000000..855670e
--- /dev/null
@@ -0,0 +1,117 @@
+<!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: src/lib/lightmediascanner_utils.c Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;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 &lt;<a class="code" href="lightmediascanner__utils_8h.html">lightmediascanner_utils.h</a>&gt;</span>
+<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
+<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;alloca.h&gt;</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 &lt; 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 &gt;= 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 &lt; 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 &lt; p)
+<a name="l00054"></a>00054         <span class="keywordflow">for</span> (; len &gt; 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 &lt; 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 &gt;= 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 &gt;= <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 &lt; exts_len; i++) {
+<a name="l00090"></a>00090             <span class="keywordflow">if</span> (exts_pos[i] &gt; 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8c.html b/www/api/lightmediascanner__utils_8c.html
new file mode 100644 (file)
index 0000000..041b6ad
--- /dev/null
@@ -0,0 +1,138 @@
+<!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: src/lib/lightmediascanner_utils.c File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<h1>src/lib/lightmediascanner_utils.c File Reference</h1><code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</code><br>
+<code>#include &lt;ctype.h&gt;</code><br>
+<code>#include &lt;alloca.h&gt;</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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</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">int&nbsp;</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="086d2449129976541c66a83984bffbe6"></a><!-- doxytag: member="lightmediascanner_utils.c::lms_strstrip" ref="086d2449129976541c66a83984bffbe6" args="(char *str, unsigned int *p_len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void lms_strstrip           </td>
+          <td>(</td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Strips string, in place.<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>str</em>&nbsp;</td><td>string to be stripped. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p_len</em>&nbsp;</td><td>string length to analyse, also the place where the final size is stored. </td></tr>
+  </table>
+</dl>
+
+<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>
+</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)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int lms_which_extension           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>name_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>exts</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>exts_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Find out which of the given extensions matches the given name.<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>name</em>&nbsp;</td><td>string to analyse. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name_len</em>&nbsp;</td><td>string length. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>exts</em>&nbsp;</td><td>array of extensions to be checked. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>exts_len</em>&nbsp;</td><td>number of items in array <code>exts</code> </td></tr>
+  </table>
+</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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8c__incl.map b/www/api/lightmediascanner__utils_8c__incl.map
new file mode 100644 (file)
index 0000000..4ead8cf
--- /dev/null
@@ -0,0 +1 @@
+<area shape="rect" href="$lightmediascanner__utils_8h.html" title="lightmediascanner_utils.h" alt="" coords="249,5,407,32">
diff --git a/www/api/lightmediascanner__utils_8c__incl.md5 b/www/api/lightmediascanner__utils_8c__incl.md5
new file mode 100644 (file)
index 0000000..ad1fc86
--- /dev/null
@@ -0,0 +1 @@
+adc98e112bb9938acab1c866f3f8d1b8
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8c__incl.png b/www/api/lightmediascanner__utils_8c__incl.png
new file mode 100644 (file)
index 0000000..c24d1cb
Binary files /dev/null and b/www/api/lightmediascanner__utils_8c__incl.png differ
diff --git a/www/api/lightmediascanner__utils_8h-source.html b/www/api/lightmediascanner__utils_8h-source.html
new file mode 100644 (file)
index 0000000..a813c99
--- /dev/null
@@ -0,0 +1,73 @@
+<!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: src/lib/lightmediascanner_utils.h Source File</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</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="l00023"></a>00023 <span class="preprocessor"></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#ifdef API</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#undef API</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00028"></a>00028 <span class="preprocessor">#ifdef __GNUC__</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt;= 4</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#  define API __attribute__ ((visibility("default")))</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"># if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+<a name="l00040"></a><a class="code" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">00040</a> <span class="preprocessor"></span><span class="preprocessor">#  define API</span>
+<a name="l00041"></a><a class="code" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">00041</a> <span class="preprocessor"></span><span class="preprocessor">#  define GNUC_NON_NULL(...)</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00046"></a>00046 <span class="preprocessor">#endif</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span>
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="structlms__string__size.html">00049</a>     <span class="keyword">struct </span><a class="code" href="structlms__string__size.html">lms_string_size</a> {
+<a name="l00050"></a><a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">00050</a>         <span class="keywordtype">char</span> *<a class="code" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a>;
+<a name="l00051"></a><a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">00051</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a>;
+<a name="l00052"></a>00052     };
+<a name="l00053"></a>00053 
+<a name="l00054"></a><a class="code" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">00054</a> <span class="preprocessor">#define LMS_STATIC_STRING_SIZE(s)  {s, sizeof(s) - 1}</span>
+<a name="l00055"></a><a class="code" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define LMS_ARRAY_SIZE(a)  (sizeof(a) / sizeof(*a))</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="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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8h.html b/www/api/lightmediascanner__utils_8h.html
new file mode 100644 (file)
index 0000000..f788ac2
--- /dev/null
@@ -0,0 +1,232 @@
+<!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: src/lib/lightmediascanner_utils.h File 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>Globals</span></a></li>
+  </ul>
+</div>
+<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>
+<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>
+
+<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></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html">lms_string_size</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#8ad3460b8bb014878af2cdfd42fcf5c6">_LIGHTMEDIASCANNER_UTILS_H_</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#d8ce4efaa307683d3d763b37b4711c53">API</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#6fe68cac0abf3e2ca61141920414e93a">GNUC_NON_NULL</a>(...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#786c453d995be000d52360f327a6816b">LMS_STATIC_STRING_SIZE</a>(s)&nbsp;&nbsp;&nbsp;{s, sizeof(s) - 1}</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="lightmediascanner__utils_8h.html#13a0622cfcc91eec261da4285621bdcc">LMS_ARRAY_SIZE</a>(a)&nbsp;&nbsp;&nbsp;(sizeof(a) / sizeof(*a))</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">API void&nbsp;</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&nbsp;</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>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="8ad3460b8bb014878af2cdfd42fcf5c6"></a><!-- doxytag: member="lightmediascanner_utils.h::_LIGHTMEDIASCANNER_UTILS_H_" ref="8ad3460b8bb014878af2cdfd42fcf5c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _LIGHTMEDIASCANNER_UTILS_H_&nbsp;&nbsp;&nbsp;1          </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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<p>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt; </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>.
+</div>
+</div><p>
+<a class="anchor" name="d8ce4efaa307683d3d763b37b4711c53"></a><!-- doxytag: member="lightmediascanner_utils.h::API" ref="d8ce4efaa307683d3d763b37b4711c53" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define API          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6fe68cac0abf3e2ca61141920414e93a"></a><!-- doxytag: member="lightmediascanner_utils.h::GNUC_NON_NULL" ref="6fe68cac0abf3e2ca61141920414e93a" args="(...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GNUC_NON_NULL          </td>
+          <td>(</td>
+          <td class="paramtype"> <em>...</em>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="13a0622cfcc91eec261da4285621bdcc"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_ARRAY_SIZE" ref="13a0622cfcc91eec261da4285621bdcc" args="(a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define LMS_ARRAY_SIZE          </td>
+          <td>(</td>
+          <td class="paramtype">a&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;(sizeof(a) / sizeof(*a))</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="786c453d995be000d52360f327a6816b"></a><!-- doxytag: member="lightmediascanner_utils.h::LMS_STATIC_STRING_SIZE" ref="786c453d995be000d52360f327a6816b" args="(s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define LMS_STATIC_STRING_SIZE          </td>
+          <td>(</td>
+          <td class="paramtype">s&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%">&nbsp;&nbsp;&nbsp;{s, sizeof(s) - 1}</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<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">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void lms_strstrip           </td>
+          <td>(</td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>str</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int *&nbsp;</td>
+          <td class="paramname"> <em>p_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+</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" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">API void API int lms_which_extension           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>name_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const struct <a class="el" href="structlms__string__size.html">lms_string_size</a> *&nbsp;</td>
+          <td class="paramname"> <em>exts</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned int&nbsp;</td>
+          <td class="paramname"> <em>exts_len</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.map b/www/api/lightmediascanner__utils_8h__dep__incl.map
new file mode 100644 (file)
index 0000000..39a63d3
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.md5 b/www/api/lightmediascanner__utils_8h__dep__incl.md5
new file mode 100644 (file)
index 0000000..f3955cd
--- /dev/null
@@ -0,0 +1 @@
+6c1cec54a95c40d2c24f0fa27d3ca603
\ No newline at end of file
diff --git a/www/api/lightmediascanner__utils_8h__dep__incl.png b/www/api/lightmediascanner__utils_8h__dep__incl.png
new file mode 100644 (file)
index 0000000..c9c7883
Binary files /dev/null and b/www/api/lightmediascanner__utils_8h__dep__incl.png differ
diff --git a/www/api/modules.html b/www/api/modules.html
new file mode 100644 (file)
index 0000000..33ea460
--- /dev/null
@@ -0,0 +1,26 @@
+<!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: Module Index</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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul>
+</div>
+<h1>Light Media Scanner 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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structfds.html b/www/api/structfds.html
new file mode 100644 (file)
index 0000000..a6a24c9
--- /dev/null
@@ -0,0 +1,83 @@
+<!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: fds 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>fds Struct Reference</h1><!-- doxytag: class="fds" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+<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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">r</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">w</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#l00044">44</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="c49bfa8d58564d4c483eb434b9ff5710"></a><!-- doxytag: member="fds::r" ref="c49bfa8d58564d4c483eb434b9ff5710" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structfds.html#c49bfa8d58564d4c483eb434b9ff5710">fds::r</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="d13e19697072e306771103286a8316d0"></a><!-- doxytag: member="fds::w" ref="d13e19697072e306771103286a8316d0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structfds.html#d13e19697072e306771103286a8316d0">fds::w</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms.html b/www/api/structlms.html
new file mode 100644 (file)
index 0000000..e72fd70
--- /dev/null
@@ -0,0 +1,191 @@
+<!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: lms 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms Struct Reference</h1><!-- doxytag: class="lms" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+Collaboration diagram for lms:<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">
+<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> *&nbsp;</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&nbsp;</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"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">cs_conv</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">db_path</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">slave_timeout</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">is_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>
+<a class="anchor" name="52883423c9a1276420ba2bb9b50a138c"></a><!-- doxytag: member="lms::parsers" ref="52883423c9a1276420ba2bb9b50a138c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structparser.html">parser</a>* <a class="el" href="structlms.html#52883423c9a1276420ba2bb9b50a138c">lms::parsers</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>
+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>.
+</div>
+</div><p>
+<a class="anchor" name="9cdd3a937a0a2bd4515e9e888bb519e3"></a><!-- doxytag: member="lms::n_parsers" ref="9cdd3a937a0a2bd4515e9e888bb519e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms.html#9cdd3a937a0a2bd4515e9e888bb519e3">lms::n_parsers</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>
+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>.
+</div>
+</div><p>
+<a class="anchor" name="eba2db305bafddedf143ff7b9f2396db"></a><!-- doxytag: member="lms::cs_conv" ref="eba2db305bafddedf143ff7b9f2396db" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* <a class="el" href="structlms.html#eba2db305bafddedf143ff7b9f2396db">lms::cs_conv</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>
+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>.
+</div>
+</div><p>
+<a class="anchor" name="02e767169813808f193c23733ba89b4b"></a><!-- doxytag: member="lms::db_path" ref="02e767169813808f193c23733ba89b4b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structlms.html#02e767169813808f193c23733ba89b4b">lms::db_path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="0f545adf2fc37994b7f55f7ea7aac555"></a><!-- doxytag: member="lms::slave_timeout" ref="0f545adf2fc37994b7f55f7ea7aac555" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms.html#0f545adf2fc37994b7f55f7ea7aac555">lms::slave_timeout</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<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>
+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>.
+</div>
+</div><p>
+<a class="anchor" name="1dc82aac2ab3ff643027878bb1aa3cb8"></a><!-- doxytag: member="lms::commit_interval" ref="1dc82aac2ab3ff643027878bb1aa3cb8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms.html#1dc82aac2ab3ff643027878bb1aa3cb8">lms::commit_interval</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="bb03533445b77299e964b2ec02bca039"></a><!-- doxytag: member="lms::is_processing" ref="bb03533445b77299e964b2ec02bca039" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms.html#bb03533445b77299e964b2ec02bca039">lms::is_processing</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__audio__info.html b/www/api/structlms__audio__info.html
new file mode 100644 (file)
index 0000000..45588c3
--- /dev/null
@@ -0,0 +1,201 @@
+<!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: lms_audio_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<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 &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</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>
+<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">
+<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&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">playcnt</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">trackno</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">rating</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>
+<a class="anchor" name="b59ffe210521786be5fe579167b24bc4"></a><!-- doxytag: member="lms_audio_info::id" ref="b59ffe210521786be5fe579167b24bc4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__audio__info.html#b59ffe210521786be5fe579167b24bc4">lms_audio_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="c87982b6b219add6aff3ce9c25fe00bf"></a><!-- doxytag: member="lms_audio_info::title" ref="c87982b6b219add6aff3ce9c25fe00bf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#c87982b6b219add6aff3ce9c25fe00bf">lms_audio_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6f9fa88539da4867bc34fa1e7c17816c"></a><!-- doxytag: member="lms_audio_info::artist" ref="6f9fa88539da4867bc34fa1e7c17816c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#6f9fa88539da4867bc34fa1e7c17816c">lms_audio_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="caeda14ddf0051e9dd69861171fb66a2"></a><!-- doxytag: member="lms_audio_info::album" ref="caeda14ddf0051e9dd69861171fb66a2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#caeda14ddf0051e9dd69861171fb66a2">lms_audio_info::album</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="72efb9991c5f49eabd62aa61ead91031"></a><!-- doxytag: member="lms_audio_info::genre" ref="72efb9991c5f49eabd62aa61ead91031" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__audio__info.html#72efb9991c5f49eabd62aa61ead91031">lms_audio_info::genre</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="7197e471d313274c4e361b2ff9e60e8a"></a><!-- doxytag: member="lms_audio_info::playcnt" ref="7197e471d313274c4e361b2ff9e60e8a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__audio__info.html#7197e471d313274c4e361b2ff9e60e8a">lms_audio_info::playcnt</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="d372f08ada955f75be8f218d90093242"></a><!-- doxytag: member="lms_audio_info::trackno" ref="d372f08ada955f75be8f218d90093242" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structlms__audio__info.html#d372f08ada955f75be8f218d90093242">lms_audio_info::trackno</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="932e73ccd8ff946831930be65d1ba2d2"></a><!-- doxytag: member="lms_audio_info::rating" ref="932e73ccd8ff946831930be65d1ba2d2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structlms__audio__info.html#932e73ccd8ff946831930be65d1ba2d2">lms_audio_info::rating</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__audio__info__coll__graph.map b/www/api/structlms__audio__info__coll__graph.map
new file mode 100644 (file)
index 0000000..689b1a2
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/structlms__audio__info__coll__graph.md5 b/www/api/structlms__audio__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..6e0ee24
--- /dev/null
@@ -0,0 +1 @@
+c7008461ae99ff64e800f12d9eac3b09
\ No newline at end of file
diff --git a/www/api/structlms__audio__info__coll__graph.png b/www/api/structlms__audio__info__coll__graph.png
new file mode 100644 (file)
index 0000000..e265082
Binary files /dev/null and b/www/api/structlms__audio__info__coll__graph.png differ
diff --git a/www/api/structlms__coll__graph.map b/www/api/structlms__coll__graph.map
new file mode 100644 (file)
index 0000000..99644d7
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/structlms__coll__graph.md5 b/www/api/structlms__coll__graph.md5
new file mode 100644 (file)
index 0000000..bb8a9c0
--- /dev/null
@@ -0,0 +1 @@
+56358638e762e6352c9d8267ea330915
\ No newline at end of file
diff --git a/www/api/structlms__coll__graph.png b/www/api/structlms__coll__graph.png
new file mode 100644 (file)
index 0000000..2d9f909
Binary files /dev/null and b/www/api/structlms__coll__graph.png differ
diff --git a/www/api/structlms__context.html b/www/api/structlms__context.html
new file mode 100644 (file)
index 0000000..cd1df77
--- /dev/null
@@ -0,0 +1,79 @@
+<!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: lms_context 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_context Struct Reference</h1><!-- doxytag: class="lms_context" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<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">sqlite3 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">db</a></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> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">cs_conv</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#l00143">143</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.<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">
+      <table class="memname">
+        <tr>
+          <td class="memname">sqlite3* <a class="el" href="structlms__context.html#310d38a2fab9ecea67601d0c6a3d8d81">lms_context::db</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="a5ce50393bbe62f6357934a1d9ce5a61"></a><!-- doxytag: member="lms_context::cs_conv" ref="a5ce50393bbe62f6357934a1d9ce5a61" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__LMS__CHARSET.html#g50e57a19bb3d062fe7eea437a8b8e949">lms_charset_conv_t</a>* <a class="el" href="structlms__context.html#a5ce50393bbe62f6357934a1d9ce5a61">lms_context::cs_conv</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__db__cache.html b/www/api/structlms__db__cache.html
new file mode 100644 (file)
index 0000000..a08f905
--- /dev/null
@@ -0,0 +1,86 @@
+<!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: lms_db_cache 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_db_cache Struct Reference</h1><!-- doxytag: class="lms_db_cache" --><code>#include &lt;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&gt;</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>
+<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">
+<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&nbsp;</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> *&nbsp;</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>
+<a class="anchor" name="b325e01e42fd3b0f11d52328522c6414"></a><!-- doxytag: member="lms_db_cache::size" ref="b325e01e42fd3b0f11d52328522c6414" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__db__cache.html#b325e01e42fd3b0f11d52328522c6414">lms_db_cache::size</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="0056bfe95b38863dc9b067d699230690"></a><!-- doxytag: member="lms_db_cache::entries" ref="0056bfe95b38863dc9b067d699230690" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__db__cache__entry.html">lms_db_cache_entry</a>* <a class="el" href="structlms__db__cache.html#0056bfe95b38863dc9b067d699230690">lms_db_cache::entries</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__db__cache__coll__graph.map b/www/api/structlms__db__cache__coll__graph.map
new file mode 100644 (file)
index 0000000..45a2167
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/structlms__db__cache__coll__graph.md5 b/www/api/structlms__db__cache__coll__graph.md5
new file mode 100644 (file)
index 0000000..48211c2
--- /dev/null
@@ -0,0 +1 @@
+5d26d8dd87da6e66eaffed71640915d7
\ No newline at end of file
diff --git a/www/api/structlms__db__cache__coll__graph.png b/www/api/structlms__db__cache__coll__graph.png
new file mode 100644 (file)
index 0000000..d99c733
Binary files /dev/null and b/www/api/structlms__db__cache__coll__graph.png differ
diff --git a/www/api/structlms__db__cache__entry.html b/www/api/structlms__db__cache__entry.html
new file mode 100644 (file)
index 0000000..b293ccd
--- /dev/null
@@ -0,0 +1,83 @@
+<!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: lms_db_cache_entry 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_db_cache_entry Struct Reference</h1><!-- doxytag: class="lms_db_cache_entry" --><code>#include &lt;<a class="el" href="lightmediascanner__db__private_8h-source.html">lightmediascanner_db_private.h</a>&gt;</code>
+<p>
+<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">const sqlite3 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">db</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">data</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#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>
+<a class="anchor" name="01aadf6d9a8161696019d39566b15760"></a><!-- doxytag: member="lms_db_cache_entry::db" ref="01aadf6d9a8161696019d39566b15760" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const sqlite3* <a class="el" href="structlms__db__cache__entry.html#01aadf6d9a8161696019d39566b15760">lms_db_cache_entry::db</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="53488063740ff72c830be3103e7150fe"></a><!-- doxytag: member="lms_db_cache_entry::data" ref="53488063740ff72c830be3103e7150fe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structlms__db__cache__entry.html#53488063740ff72c830be3103e7150fe">lms_db_cache_entry::data</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__file__info.html b/www/api/structlms__file__info.html
new file mode 100644 (file)
index 0000000..e364ff2
--- /dev/null
@@ -0,0 +1,188 @@
+<!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: lms_file_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_file_info Struct Reference</h1><!-- doxytag: class="lms_file_info" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<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">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">path</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">path_len</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">base</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">id</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">mtime</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">time_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">dtime</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">size</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#l00133">133</a> of file <a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>.<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">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__file__info.html#1fa6966afec95bbb00ee01f345948e44">lms_file_info::path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="9d74df2696cfd0f516e61e9db2b35731"></a><!-- doxytag: member="lms_file_info::path_len" ref="9d74df2696cfd0f516e61e9db2b35731" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__file__info.html#9d74df2696cfd0f516e61e9db2b35731">lms_file_info::path_len</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="ccc82711360714ff6ccd373fb7a42112"></a><!-- doxytag: member="lms_file_info::base" ref="ccc82711360714ff6ccd373fb7a42112" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structlms__file__info.html#ccc82711360714ff6ccd373fb7a42112">lms_file_info::base</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="d68ded5c64ae28a4976637f8483e9cfe"></a><!-- doxytag: member="lms_file_info::id" ref="d68ded5c64ae28a4976637f8483e9cfe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__file__info.html#d68ded5c64ae28a4976637f8483e9cfe">lms_file_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="4aa878eefdde84541021087192b9dacd"></a><!-- doxytag: member="lms_file_info::mtime" ref="4aa878eefdde84541021087192b9dacd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">time_t <a class="el" href="structlms__file__info.html#4aa878eefdde84541021087192b9dacd">lms_file_info::mtime</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="570ae808983e67ae7b22a2fec892cffd"></a><!-- doxytag: member="lms_file_info::dtime" ref="570ae808983e67ae7b22a2fec892cffd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">time_t <a class="el" href="structlms__file__info.html#570ae808983e67ae7b22a2fec892cffd">lms_file_info::dtime</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="b318b81fc934636a904f5d84efe8c1ee"></a><!-- doxytag: member="lms_file_info::size" ref="b318b81fc934636a904f5d84efe8c1ee" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">size_t <a class="el" href="structlms__file__info.html#b318b81fc934636a904f5d84efe8c1ee">lms_file_info::size</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__gps__info.html b/www/api/structlms__gps__info.html
new file mode 100644 (file)
index 0000000..8bdcb40
--- /dev/null
@@ -0,0 +1,101 @@
+<!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: lms_gps_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_gps_info Struct Reference<br>
+<small>
+[<a class="el" href="group__LMS__DB.html">DataBase-API</a>]</small>
+</h1><!-- doxytag: class="lms_gps_info" --><code>#include &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</code>
+<p>
+<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">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">latitude</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">longitude</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">altitude</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#l00061">61</a> of file <a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>.<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">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#70f152098accf3d46f18bc159e3b4359">lms_gps_info::latitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="109202a83eb79b9a10df135600260e1b"></a><!-- doxytag: member="lms_gps_info::longitude" ref="109202a83eb79b9a10df135600260e1b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#109202a83eb79b9a10df135600260e1b">lms_gps_info::longitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="9b56b5dbae3e5c5722f7331c2bcbd520"></a><!-- doxytag: member="lms_gps_info::altitude" ref="9b56b5dbae3e5c5722f7331c2bcbd520" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double <a class="el" href="structlms__gps__info.html#9b56b5dbae3e5c5722f7331c2bcbd520">lms_gps_info::altitude</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__image__info.html b/www/api/structlms__image__info.html
new file mode 100644 (file)
index 0000000..18be860
--- /dev/null
@@ -0,0 +1,201 @@
+<!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: lms_image_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<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 &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</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>
+<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">
+<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&nbsp;</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>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">width</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">height</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned short&nbsp;</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>&nbsp;</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>
+<a class="anchor" name="e6af5a9d85600a7694991681d141844b"></a><!-- doxytag: member="lms_image_info::id" ref="e6af5a9d85600a7694991681d141844b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__image__info.html#e6af5a9d85600a7694991681d141844b">lms_image_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="6242d231ae1972fb25bdaeed614d7a63"></a><!-- doxytag: member="lms_image_info::title" ref="6242d231ae1972fb25bdaeed614d7a63" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__image__info.html#6242d231ae1972fb25bdaeed614d7a63">lms_image_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="ee7b8401f3272a0855ea27a2249a8aab"></a><!-- doxytag: member="lms_image_info::artist" ref="ee7b8401f3272a0855ea27a2249a8aab" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__image__info.html#ee7b8401f3272a0855ea27a2249a8aab">lms_image_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="150973d3ac9f60f1b74f0a0d08c7f288"></a><!-- doxytag: member="lms_image_info::date" ref="150973d3ac9f60f1b74f0a0d08c7f288" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__image__info.html#150973d3ac9f60f1b74f0a0d08c7f288">lms_image_info::date</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="fbd2df9f6f5f290ac02ce4d803677249"></a><!-- doxytag: member="lms_image_info::width" ref="fbd2df9f6f5f290ac02ce4d803677249" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#fbd2df9f6f5f290ac02ce4d803677249">lms_image_info::width</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="f2ae81781dadf7ecaa307b3bc91e710e"></a><!-- doxytag: member="lms_image_info::height" ref="f2ae81781dadf7ecaa307b3bc91e710e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#f2ae81781dadf7ecaa307b3bc91e710e">lms_image_info::height</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="434330468b69d0f14b344c672d4778af"></a><!-- doxytag: member="lms_image_info::orientation" ref="434330468b69d0f14b344c672d4778af" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned short <a class="el" href="structlms__image__info.html#434330468b69d0f14b344c672d4778af">lms_image_info::orientation</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="2f003c2cfb937ed5d667a188ba0d54e3"></a><!-- doxytag: member="lms_image_info::gps" ref="2f003c2cfb937ed5d667a188ba0d54e3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__gps__info.html">lms_gps_info</a> <a class="el" href="structlms__image__info.html#2f003c2cfb937ed5d667a188ba0d54e3">lms_image_info::gps</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__image__info__coll__graph.map b/www/api/structlms__image__info__coll__graph.map
new file mode 100644 (file)
index 0000000..4d1fd17
--- /dev/null
@@ -0,0 +1,6 @@
+<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">
diff --git a/www/api/structlms__image__info__coll__graph.md5 b/www/api/structlms__image__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..bed778b
--- /dev/null
@@ -0,0 +1 @@
+ca323b96e715712e3e3f470c8b804d76
\ No newline at end of file
diff --git a/www/api/structlms__image__info__coll__graph.png b/www/api/structlms__image__info__coll__graph.png
new file mode 100644 (file)
index 0000000..fa7d7bf
Binary files /dev/null and b/www/api/structlms__image__info__coll__graph.png differ
diff --git a/www/api/structlms__playlist__info.html b/www/api/structlms__playlist__info.html
new file mode 100644 (file)
index 0000000..6579024
--- /dev/null
@@ -0,0 +1,106 @@
+<!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: lms_playlist_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<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 &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</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>
+<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">
+<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&nbsp;</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>&nbsp;</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&nbsp;</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>
+<a class="anchor" name="c1b12bb87ec0bdbc356a6f6ce9b7eebf"></a><!-- doxytag: member="lms_playlist_info::id" ref="c1b12bb87ec0bdbc356a6f6ce9b7eebf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__playlist__info.html#c1b12bb87ec0bdbc356a6f6ce9b7eebf">lms_playlist_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="515e63ba413a60d21ee73687151387f0"></a><!-- doxytag: member="lms_playlist_info::title" ref="515e63ba413a60d21ee73687151387f0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__playlist__info.html#515e63ba413a60d21ee73687151387f0">lms_playlist_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="81cc52f5b6ce04cd64cf3884cb774663"></a><!-- doxytag: member="lms_playlist_info::n_entries" ref="81cc52f5b6ce04cd64cf3884cb774663" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__playlist__info.html#81cc52f5b6ce04cd64cf3884cb774663">lms_playlist_info::n_entries</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__playlist__info__coll__graph.map b/www/api/structlms__playlist__info__coll__graph.map
new file mode 100644 (file)
index 0000000..38594d2
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/structlms__playlist__info__coll__graph.md5 b/www/api/structlms__playlist__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..c80de5d
--- /dev/null
@@ -0,0 +1 @@
+ede7ac5cfd36a43bf5db1e6c87fe9f7a
\ No newline at end of file
diff --git a/www/api/structlms__playlist__info__coll__graph.png b/www/api/structlms__playlist__info__coll__graph.png
new file mode 100644 (file)
index 0000000..c5f4b8e
Binary files /dev/null and b/www/api/structlms__playlist__info__coll__graph.png differ
diff --git a/www/api/structlms__plugin.html b/www/api/structlms__plugin.html
new file mode 100644 (file)
index 0000000..ca276a4
--- /dev/null
@@ -0,0 +1,184 @@
+<!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: lms_plugin 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_plugin Struct Reference</h1><!-- doxytag: class="lms_plugin" --><code>#include &lt;<a class="el" href="lightmediascanner__plugin_8h-source.html">lightmediascanner_plugin.h</a>&gt;</code>
+<p>
+<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">const char *&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>
+<a class="anchor" name="2048d92b3d8918a6a2bb2cf39a375e9a"></a><!-- doxytag: member="lms_plugin::name" ref="2048d92b3d8918a6a2bb2cf39a375e9a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* <a class="el" href="structlms__plugin.html#2048d92b3d8918a6a2bb2cf39a375e9a">lms_plugin::name</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="5b532e6e50911f02fd9e123489c62a0f"></a><!-- doxytag: member="lms_plugin::match" ref="5b532e6e50911f02fd9e123489c62a0f" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="0d3361b489eb7c7c4ecc7917c0390b9e"></a><!-- doxytag: member="lms_plugin::parse" ref="0d3361b489eb7c7c4ecc7917c0390b9e" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="4921b3b79c7ecdddbe9f1a7c9f5019c7"></a><!-- doxytag: member="lms_plugin::close" ref="4921b3b79c7ecdddbe9f1a7c9f5019c7" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="aeff2e030242ffdf3bdc512a5ef6cbec"></a><!-- doxytag: member="lms_plugin::setup" ref="aeff2e030242ffdf3bdc512a5ef6cbec" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="b3dffd208749a53ad2eb5ffb6d1b7d07"></a><!-- doxytag: member="lms_plugin::start" ref="b3dffd208749a53ad2eb5ffb6d1b7d07" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="839d286e12caa0711f3987adb4b803f0"></a><!-- doxytag: member="lms_plugin::finish" ref="839d286e12caa0711f3987adb4b803f0" args="" -->
+<div class="memitem">
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__string__size.html b/www/api/structlms__string__size.html
new file mode 100644 (file)
index 0000000..985791e
--- /dev/null
@@ -0,0 +1,81 @@
+<!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: lms_string_size 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>lms_string_size Struct Reference</h1><!-- doxytag: class="lms_string_size" --><code>#include &lt;<a class="el" href="lightmediascanner__utils_8h-source.html">lightmediascanner_utils.h</a>&gt;</code>
+<p>
+<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">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">str</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">len</a></td></tr>
+
+</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>
+<a class="anchor" name="5f4844463b193dadb2286e69200ce8a7"></a><!-- doxytag: member="lms_string_size::str" ref="5f4844463b193dadb2286e69200ce8a7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structlms__string__size.html#5f4844463b193dadb2286e69200ce8a7">lms_string_size::str</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="fc37b712d71c2010e655bbd4f0a22e96"></a><!-- doxytag: member="lms_string_size::len" ref="fc37b712d71c2010e655bbd4f0a22e96" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned int <a class="el" href="structlms__string__size.html#fc37b712d71c2010e655bbd4f0a22e96">lms_string_size::len</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__video__info.html b/www/api/structlms__video__info.html
new file mode 100644 (file)
index 0000000..1b3c06e
--- /dev/null
@@ -0,0 +1,106 @@
+<!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: lms_video_info 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<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 &lt;<a class="el" href="lightmediascanner__db_8h-source.html">lightmediascanner_db.h</a>&gt;</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>
+<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">
+<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&nbsp;</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>&nbsp;</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>&nbsp;</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>
+<a class="anchor" name="12b5bc5f8b13bdcb3ee1e919a1e05822"></a><!-- doxytag: member="lms_video_info::id" ref="12b5bc5f8b13bdcb3ee1e919a1e05822" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int64_t <a class="el" href="structlms__video__info.html#12b5bc5f8b13bdcb3ee1e919a1e05822">lms_video_info::id</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="f3b8a8168ec317daef65da3b06f72bc0"></a><!-- doxytag: member="lms_video_info::title" ref="f3b8a8168ec317daef65da3b06f72bc0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__video__info.html#f3b8a8168ec317daef65da3b06f72bc0">lms_video_info::title</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="c0bfe0cf4fe29e3c24a6df4248c7640e"></a><!-- doxytag: member="lms_video_info::artist" ref="c0bfe0cf4fe29e3c24a6df4248c7640e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">struct <a class="el" href="structlms__string__size.html">lms_string_size</a> <a class="el" href="structlms__video__info.html#c0bfe0cf4fe29e3c24a6df4248c7640e">lms_video_info::artist</a><code> [read]</code>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structlms__video__info__coll__graph.map b/www/api/structlms__video__info__coll__graph.map
new file mode 100644 (file)
index 0000000..9bac214
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/structlms__video__info__coll__graph.md5 b/www/api/structlms__video__info__coll__graph.md5
new file mode 100644 (file)
index 0000000..8b2bade
--- /dev/null
@@ -0,0 +1 @@
+affb01d2ca5625f9c002e3364b21c1de
\ No newline at end of file
diff --git a/www/api/structlms__video__info__coll__graph.png b/www/api/structlms__video__info__coll__graph.png
new file mode 100644 (file)
index 0000000..2ba506f
Binary files /dev/null and b/www/api/structlms__video__info__coll__graph.png differ
diff --git a/www/api/structparser.html b/www/api/structparser.html
new file mode 100644 (file)
index 0000000..627f580
--- /dev/null
@@ -0,0 +1,105 @@
+<!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: parser 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>parser Struct Reference</h1><!-- doxytag: class="parser" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+Collaboration diagram for parser:<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">
+<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> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">plugin</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">dl_handle</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">so_path</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>
+<a class="anchor" name="6c71e3299d4bac660320e7ca935f9b32"></a><!-- doxytag: member="parser::plugin" ref="6c71e3299d4bac660320e7ca935f9b32" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structlms__plugin.html">lms_plugin_t</a>* <a class="el" href="structparser.html#6c71e3299d4bac660320e7ca935f9b32">parser::plugin</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="3dd2a049d1cd9229ec33645e28803e0a"></a><!-- doxytag: member="parser::dl_handle" ref="3dd2a049d1cd9229ec33645e28803e0a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structparser.html#3dd2a049d1cd9229ec33645e28803e0a">parser::dl_handle</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<a class="anchor" name="f29cac42dbdf498606fae3f5b9fc3762"></a><!-- doxytag: member="parser::so_path" ref="f29cac42dbdf498606fae3f5b9fc3762" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structparser.html#f29cac42dbdf498606fae3f5b9fc3762">parser::so_path</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structparser__coll__graph.map b/www/api/structparser__coll__graph.map
new file mode 100644 (file)
index 0000000..6512b75
--- /dev/null
@@ -0,0 +1,3 @@
+<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">
diff --git a/www/api/structparser__coll__graph.md5 b/www/api/structparser__coll__graph.md5
new file mode 100644 (file)
index 0000000..b2625fa
--- /dev/null
@@ -0,0 +1 @@
+41c356210d44353f0ab99eadd6a24cbd
\ No newline at end of file
diff --git a/www/api/structparser__coll__graph.png b/www/api/structparser__coll__graph.png
new file mode 100644 (file)
index 0000000..64cf5d8
Binary files /dev/null and b/www/api/structparser__coll__graph.png differ
diff --git a/www/api/structpinfo.html b/www/api/structpinfo.html
new file mode 100644 (file)
index 0000000..57bfcd7
--- /dev/null
@@ -0,0 +1,149 @@
+<!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: pinfo 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.2 -->
+<div class="tabs">
+  <ul>
+    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li class="current"><a href="classes.html"><span>Data&nbsp;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&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+  </ul>
+</div>
+<h1>pinfo Struct Reference</h1><!-- doxytag: class="pinfo" --><code>#include &lt;<a class="el" href="lightmediascanner__private_8h-source.html">lightmediascanner_private.h</a>&gt;</code>
+<p>
+Collaboration diagram for pinfo:<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">
+<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>&nbsp;</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="structfds.html">fds</a>&nbsp;</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">pollfd&nbsp;</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"><a class="el" href="structlms.html">lms_t</a> *&nbsp;</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">pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">child</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="" -->
+<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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<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">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>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<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">struct pollfd <a class="el" href="structpinfo.html#ee9c21ae165e7daf968a7ed87c736076">pinfo::poll</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#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>.
+</div>
+</div><p>
+<a class="anchor" name="9958e1d447ffadf40c871a6cdaa86b4c"></a><!-- doxytag: member="pinfo::lms" ref="9958e1d447ffadf40c871a6cdaa86b4c" 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>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</div>
+</div><p>
+<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">pid_t <a class="el" href="structpinfo.html#d31b28f6373d19531cd208c4c2a71a51">pinfo::child</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<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>.
+</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&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
+</body>
+</html>
diff --git a/www/api/structpinfo__coll__graph.map b/www/api/structpinfo__coll__graph.map
new file mode 100644 (file)
index 0000000..b5be902
--- /dev/null
@@ -0,0 +1,12 @@
+<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">
diff --git a/www/api/structpinfo__coll__graph.md5 b/www/api/structpinfo__coll__graph.md5
new file mode 100644 (file)
index 0000000..65651cb
--- /dev/null
@@ -0,0 +1 @@
+e8aa5ab1319012540c6e71adc8699ec9
\ No newline at end of file
diff --git a/www/api/structpinfo__coll__graph.png b/www/api/structpinfo__coll__graph.png
new file mode 100644 (file)
index 0000000..6a7f07e
Binary files /dev/null and b/www/api/structpinfo__coll__graph.png differ
diff --git a/www/api/tab_b.gif b/www/api/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/www/api/tab_b.gif differ
diff --git a/www/api/tab_l.gif b/www/api/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/www/api/tab_l.gif differ
diff --git a/www/api/tab_r.gif b/www/api/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/www/api/tab_r.gif differ
diff --git a/www/api/tabs.css b/www/api/tabs.css
new file mode 100644 (file)
index 0000000..c37faaf
--- /dev/null
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.nav
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+}