Changeset 3520

Show
Ignore:
Timestamp:
08/11/08 10:22:42 (4 months ago)
Author:
dgollub
Message:

Improve usage of osyncplugin and add plugin list option.
Patch by Patrick Ammann

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/tools/osyncplugin.c

    r3507 r3520  
    4040char *configfile = NULL; 
    4141char *configdir = NULL; 
     42osync_bool pluginlist= FALSE; 
    4243GList *sinks = NULL; 
    4344GList *cmdlist = NULL; 
     
    8889 * Argument handling  
    8990 */ 
    90 Command *new_command(Cmd cmd, const char *arg) { 
     91static Command *new_command(Cmd cmd, const char *arg) { 
    9192 
    9293        Command *newcommand = malloc(sizeof(Command)); 
     
    110111} 
    111112 
    112 void free_command(Command **cmd) { 
     113static void free_command(Command **cmd) { 
    113114        assert(*cmd); 
    114115 
     
    120121} 
    121122 
    122 void usage(const char *name) 
    123 { 
     123static void usage(const char *name) 
     124{ 
     125        /* TODO: improve usage output */ 
    124126        fprintf(stderr, "Usage: %s\n", name); 
    125         /* TODO: write usage output */ 
     127         
     128        fprintf (stderr, "Configuration options:\n"); 
     129        fprintf (stderr, "[--config] \tSet config file\n"); 
     130        fprintf (stderr, "[--configdir] \tSet different config directory. Default: ~./opensync\n"); 
     131         
     132        fprintf (stderr, "Plugin options:\n"); 
     133        fprintf (stderr, "[--plugin] \tSet plugin\n"); 
     134        fprintf (stderr, "[--pluginpath] \t\n"); 
     135        fprintf (stderr, "[--pluginlist] \tShow list of plugins\n"); 
     136         
     137        fprintf (stderr, "Format options:\n"); 
     138        fprintf (stderr, "[--formatpath] \t\n"); 
     139         
     140        fprintf (stderr, "Command options:\n"); 
     141        fprintf (stderr, "[--initialize] \t\n"); 
     142        fprintf (stderr, "[--connect] \t\n"); 
     143        fprintf (stderr, "[--disconnect] \t\n"); 
     144        fprintf (stderr, "[--finalize] \t\n"); 
     145        fprintf (stderr, "[--slowsync] \t\n"); 
     146        fprintf (stderr, "[--sync] \t\n"); 
     147        fprintf (stderr, "[--fastsync] \t\n"); 
     148        fprintf (stderr, "[--syncdone] \t\n"); 
     149        fprintf (stderr, "[--committedall] \t\n"); 
     150        fprintf (stderr, "[--commit] \t\n"); 
     151        fprintf (stderr, "[--batchcommit] \t\n"); 
     152        fprintf (stderr, "[--write] \t\n"); 
     153        fprintf (stderr, "[--read] \t\n"); 
     154        fprintf (stderr, "[--empty] \t\n"); 
    126155 
    127156        exit(1); 
    128157} 
    129158 
    130 void parse_args(int argc, char **argv) { 
     159static void parse_args(int argc, char **argv) { 
    131160 
    132161        int i; 
     
    158187                        if (!pluginpath) 
    159188                                pluginpath = strdup(argv[i+1]); 
     189 
     190                        i++; 
     191                        continue; 
     192                } else if (!strcmp(arg, "--pluginlist") || !strcmp(arg, "-L")) { 
     193                        pluginlist= TRUE; 
    160194 
    161195                        i++; 
     
    269303                } 
    270304        } 
    271  
     305         
     306        if (pluginlist) 
     307                return; 
    272308 
    273309        if (!cmdlist) 
     
    288324 */ 
    289325 
    290 osync_bool init(OSyncError **error) { 
     326static osync_bool init(OSyncError **error) { 
    291327        assert(!plugin); 
    292328        assert(!plugin_env); 
     
    388424} 
    389425 
    390 void *plugin_initialize(OSyncError **error) 
     426static void *plugin_initialize(OSyncError **error) 
    391427{ 
    392428        void *plugin_data = osync_plugin_initialize(plugin, plugin_info, error); 
     
    398434} 
    399435 
    400 void finalize_plugin(void **plugin_data) 
     436static void finalize_plugin(void **plugin_data) 
    401437{ 
    402438 
     
    409445 
    410446 
    411 OSyncObjTypeSink *find_sink(const char *objtype, OSyncError **error) 
     447static OSyncObjTypeSink *find_sink(const char *objtype, OSyncError **error) 
    412448{ 
    413449        assert(objtype); 
     
    422458} 
    423459 
    424 OSyncObjTypeSink *get_main_sink() 
     460static OSyncObjTypeSink *get_main_sink() 
    425461{ 
    426462        return osync_plugin_info_get_main_sink(plugin_info); 
    427463} 
    428464 
    429 const char *_osyncplugin_changetype_str(OSyncChange *change) 
     465static const char *_osyncplugin_changetype_str(OSyncChange *change) 
    430466{ 
    431467        assert(change); 
     
    456492 
    457493//typedef void (* OSyncContextChangeFn) (OSyncChange *, void *); 
    458 void _osyncplugin_ctx_change_callback(OSyncChange *change, void *user_data) 
     494static void _osyncplugin_ctx_change_callback(OSyncChange *change, void *user_data) 
    459495{ 
    460496        Command *cmd = (Command *) user_data;            
     
    476512 
    477513//typedef void (* OSyncContextCallbackFn)(void *, OSyncError *); 
    478 void _osyncplugin_ctx_callback_getchanges(void *user_data, OSyncError *error) 
     514static void _osyncplugin_ctx_callback_getchanges(void *user_data, OSyncError *error) 
    479515{ 
    480516        Command *cmd = (Command *) user_data;            
     
    491527} 
    492528 
    493 osync_bool get_changes_sink(Command *cmd, OSyncObjTypeSink *sink, SyncType type, void *plugin_data, OSyncError **error) 
     529static osync_bool get_changes_sink(Command *cmd, OSyncObjTypeSink *sink, SyncType type, void *plugin_data, OSyncError **error) 
    494530{ 
    495531        assert(sink); 
     
    526562} 
    527563 
    528 osync_bool get_changes(Command *cmd, SyncType type, void *plugin_data, OSyncError **error) 
     564static osync_bool get_changes(Command *cmd, SyncType type, void *plugin_data, OSyncError **error) 
    529565{ 
    530566        int num, i; 
     
    565601} 
    566602 
    567 void _osyncplugin_ctx_callback_connect(void *user_data, OSyncError *error) 
     603static void _osyncplugin_ctx_callback_connect(void *user_data, OSyncError *error) 
    568604{ 
    569605        assert(user_data); 
     
    597633} 
    598634 
    599 osync_bool connect_sink(Command *cmd, OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
     635static osync_bool connect_sink(Command *cmd, OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
    600636 
    601637        assert(sink); 
     
    654690} 
    655691 
    656 void _osyncplugin_ctx_callback_disconnect(void *user_data, OSyncError *error) 
     692static void _osyncplugin_ctx_callback_disconnect(void *user_data, OSyncError *error) 
    657693{ 
    658694        assert(user_data); 
     
    686722} 
    687723 
    688 osync_bool disconnect_sink(Command *cmd, OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
     724static osync_bool disconnect_sink(Command *cmd, OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
    689725 
    690726        assert(sink); 
     
    709745} 
    710746 
    711 osync_bool disconnect(Command *cmd, void *plugin_data, OSyncError **error) 
     747static osync_bool disconnect(Command *cmd, void *plugin_data, OSyncError **error) 
    712748{ 
    713749         
     
    768804} 
    769805 
    770 osync_bool commit_sink(OSyncObjTypeSink *sink, OSyncChange *change, void *plugin_data, OSyncError **error) { 
     806static osync_bool commit_sink(OSyncObjTypeSink *sink, OSyncChange *change, void *plugin_data, OSyncError **error) { 
    771807 
    772808        assert(sink); 
     
    796832} 
    797833 
    798 osync_bool commit(Command *cmd, OSyncChange *change, void *plugin_data, OSyncError **error) 
     834static osync_bool commit(Command *cmd, OSyncChange *change, void *plugin_data, OSyncError **error) 
    799835{ 
    800836        assert(change); 
     
    831867} 
    832868 
    833 osync_bool empty(Command *cmd, void *plugin_data, OSyncError **error) 
     869static osync_bool empty(Command *cmd, void *plugin_data, OSyncError **error) 
    834870{ 
    835871        int i; 
     
    857893} 
    858894 
    859 void _osyncplugin_ctx_callback_syncdone(void *user_data, OSyncError *error) 
     895static void _osyncplugin_ctx_callback_syncdone(void *user_data, OSyncError *error) 
    860896{ 
    861897        assert(user_data); 
     
    881917} 
    882918 
    883 osync_bool syncdone_sink(OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
     919static osync_bool syncdone_sink(OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
    884920 
    885921        assert(sink); 
     
    903939} 
    904940 
    905 osync_bool syncdone(Command *cmd, void *plugin_data, OSyncError **error) 
     941static osync_bool syncdone(Command *cmd, void *plugin_data, OSyncError **error) 
    906942{ 
    907943         
     
    937973} 
    938974 
    939 void _osyncplugin_ctx_callback_committedall(void *user_data, OSyncError *error) 
     975static void _osyncplugin_ctx_callback_committedall(void *user_data, OSyncError *error) 
    940976{ 
    941977        assert(user_data); 
     
    960996} 
    961997 
    962 osync_bool committedall_sink(OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
     998static osync_bool committedall_sink(OSyncObjTypeSink *sink, void *plugin_data, OSyncError **error) { 
    963999 
    9641000        assert(sink); 
     
    9821018} 
    9831019 
    984 osync_bool committedall(Command *cmd, void *plugin_data, OSyncError **error) 
     1020static osync_bool committedall(Command *cmd, void *plugin_data, OSyncError **error) 
    9851021{ 
    9861022        int i, num; 
     
    10181054 * Sync Flow 
    10191055 */ 
    1020 osync_bool run_command(Command *cmd, void **plugin_data, OSyncError **error) { 
     1056static osync_bool run_command(Command *cmd, void **plugin_data, OSyncError **error) { 
    10211057 
    10221058        assert(cmd); 
     
    11161152} 
    11171153 
     1154static osync_bool plugin_list(OSyncError **error) { 
     1155        int num; 
     1156        int i; 
     1157         
     1158        assert(!plugin_env); 
     1159 
     1160        if (!(plugin_env = osync_plugin_env_new(error))) 
     1161                goto error; 
     1162 
     1163        if (!(format_env = osync_format_env_new(error))) 
     1164                goto error_free_pluginenv; 
     1165 
     1166        if (!osync_format_env_load_plugins(format_env, formatpath, error)) 
     1167                goto error_free_formatenv; 
     1168 
     1169        if (!osync_plugin_env_load(plugin_env, pluginpath, error)) 
     1170                goto error_free_formatenv; 
     1171 
     1172        num= osync_plugin_env_num_plugins(plugin_env); 
     1173        for(i= 0; i < num; i++) { 
     1174                OSyncPlugin* plugin= osync_plugin_env_nth_plugin(plugin_env, i); 
     1175                fprintf (stdout, "Name:        %s\n", osync_plugin_get_name(plugin)); 
     1176                fprintf (stdout, "Description: %s\n", osync_plugin_get_description(plugin));             
     1177        }  
     1178        return TRUE; 
     1179         
     1180error_free_formatenv: 
     1181        osync_format_env_free(format_env); 
     1182        format_env = NULL; 
     1183error_free_pluginenv: 
     1184        osync_plugin_env_free(plugin_env); 
     1185        plugin_env = NULL; 
     1186error:   
     1187        return FALSE; 
     1188} 
     1189 
    11181190int main(int argc, char **argv) { 
    11191191 
     
    11261198 
    11271199        parse_args(argc, argv); 
     1200         
     1201        if (pluginlist) { 
     1202                if (!plugin_list(&error)) 
     1203                        goto error; 
     1204                         
     1205                goto success; 
     1206        } 
    11281207 
    11291208        if (!init(&error)) 
     
    11361215 
    11371216        /* TODO: free command list - for easier memory leak checking */ 
    1138  
     1217success: 
    11391218        if (plugin_env) 
    11401219                osync_plugin_env_free(plugin_env);