Enlightenment CVS committal Author : lordchaos Project : e17 Module : apps/evfs
Dir : e17/apps/evfs/src/common Modified Files: evfs_event_helper.c evfs_io.c Log Message: Directory listing for SAMBA plugin =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/evfs/src/common/evfs_event_helper.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- evfs_event_helper.c 8 Oct 2005 01:53:25 -0000 1.5 +++ evfs_event_helper.c 9 Oct 2005 07:42:17 -0000 1.6 @@ -38,3 +38,20 @@ /*No need to free data -it's probably a const raised by the ecore - it will free it.*/ } + +void evfs_list_dir_event_create(evfs_client* client, evfs_command* command, Ecore_List* files) { + /*Create a reply event for a file mon event, send it , destroy event*/ + + printf("Creating a list dir event..\n"); + + evfs_event* event = NEW(evfs_event); + event->type = EVFS_EV_DIR_LIST; + event->file_list.list = files; + evfs_write_event(client, command, event); + + /*Now destroy*/ + free(event); + /*No need to free data -it's probably a const raised by the ecore - it will free it.*/ + +} + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/evfs/src/common/evfs_io.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- evfs_io.c 8 Oct 2005 04:23:07 -0000 1.13 +++ evfs_io.c 9 Oct 2005 07:42:17 -0000 1.14 @@ -43,6 +43,22 @@ } +void evfs_write_list_event (evfs_client* client, evfs_event* event) { + evfs_filereference* ref; + char block[1024]; /*Maybe too small, make this dynamic*/ + + + ecore_list_goto_first(event->file_list.list); + while ( (ref = ecore_list_next(event->file_list.list)) ) { + memcpy(block, &ref->file_type, sizeof(evfs_file_type)); + memcpy(block+sizeof(evfs_file_type), ref->path, strlen(ref->path)+1); + + printf ("Writing filename '%s' with filetype %d\n", ref->path, ref->file_type); + evfs_write_ecore_ipc_client_message(client->client, ecore_ipc_message_new(EVFS_EV_REPLY,EVFS_EV_PART_FILE_REFERENCE,client->id,0,0,block, (strlen(ref->path) * sizeof(char)) + sizeof(evfs_file_type) +1 )); + } + +} + void evfs_write_event(evfs_client* client, evfs_command* command, evfs_event* event) { @@ -60,6 +76,8 @@ case EVFS_EV_STAT: evfs_write_stat_event(client,event); break; + case EVFS_EV_DIR_LIST: evfs_write_list_event(client,event); + break; } evfs_write_ecore_ipc_client_message(client->client, ecore_ipc_message_new(EVFS_EV_REPLY,EVFS_EV_PART_END,client->id,0,0,NULL,0)); @@ -86,6 +104,22 @@ memcpy(&event->stat.stat_obj, msg->data, sizeof(struct stat)); break; + case EVFS_EV_PART_FILE_REFERENCE: { + evfs_filereference* ref = NEW(evfs_filereference); + + if (!event->file_list.list) { + event->file_list.list = ecore_list_new(); + } + + memcpy(&ref->file_type, msg->data, sizeof(evfs_file_type)); + ref->path = malloc(sizeof(char) * msg->len); + memcpy(ref->path, (msg->data)+sizeof(evfs_file_type), msg->len); + //printf("(%s) Received file type for file: %d\n", ref->path, ref->file_type); + + ecore_list_append(event->file_list.list, ref); + } + break; + /*The pieces of the incoming command*/ case EVFS_COMMAND_TYPE: @@ -142,6 +176,7 @@ case EVFS_CMD_REMOVE_FILE: case EVFS_CMD_RENAME_FILE: case EVFS_CMD_FILE_STAT: + case EVFS_CMD_LIST_DIR: evfs_write_file_command(conn, command); break; } @@ -155,6 +190,7 @@ case EVFS_CMD_REMOVE_FILE: case EVFS_CMD_RENAME_FILE: case EVFS_CMD_FILE_STAT: + case EVFS_CMD_LIST_DIR: evfs_write_file_command_client(client, command); break; } ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs