Mercurial > ecos
comparison packages/services/objloader/current/src/loader_fs.c @ 2243:6fd46febe457
Warnings, cosmetic fixes from Anthony Tonizzo
| author | gthomas |
|---|---|
| date | Wed, 28 Jun 2006 12:48:46 +0000 |
| parents | 662e1b34b811 |
| children | 74dbf4c3f2e1 |
comparison
equal
deleted
inserted
replaced
| 2242:ccc0f40c3371 | 2243:6fd46febe457 |
|---|---|
| 40 * ------------------------------------------- | 40 * ------------------------------------------- |
| 41 * ####ECOSGPLCOPYRIGHTEND#### | 41 * ####ECOSGPLCOPYRIGHTEND#### |
| 42 * ================================================================= | 42 * ================================================================= |
| 43 * #####DESCRIPTIONBEGIN#### | 43 * #####DESCRIPTIONBEGIN#### |
| 44 * | 44 * |
| 45 * Author(s): atonizzo@lycos.com | 45 * Author(s): Anthony Tonizzo (atonizzo@gmail.com) |
| 46 * Contributors: nickg@ecoscentric.com | 46 * Contributors: nickg@ecoscentric.com |
| 47 * Date: 2005-05-13 | 47 * Date: 2005-05-13 |
| 48 * Purpose: | 48 * Purpose: |
| 49 * Description: | 49 * Description: |
| 50 * | 50 * |
| 64 #include <cyg/objloader/elf.h> | 64 #include <cyg/objloader/elf.h> |
| 65 #include <cyg/objloader/objelf.h> | 65 #include <cyg/objloader/objelf.h> |
| 66 #include <cyg/objloader/loader_fs.h> | 66 #include <cyg/objloader/loader_fs.h> |
| 67 | 67 |
| 68 size_t | 68 size_t |
| 69 cyg_ldr_fs_read( PELF_OBJECT p, size_t s, size_t n, void *mem ) | 69 cyg_ldr_fs_read(PELF_OBJECT p, size_t s, size_t n, void *mem) |
| 70 { | 70 { |
| 71 return fread( mem, s, n, (FILE*)p->ptr ); | 71 return fread(mem, s, n, (FILE*)p->ptr); |
| 72 } | 72 } |
| 73 | 73 |
| 74 cyg_int32 | 74 cyg_int32 |
| 75 cyg_ldr_fs_seek( PELF_OBJECT p, cyg_uint32 offs ) | 75 cyg_ldr_fs_seek(PELF_OBJECT p, cyg_uint32 offs) |
| 76 { | 76 { |
| 77 return fseek( (FILE*)p->ptr, offs, SEEK_SET ); | 77 return fseek((FILE*)p->ptr, offs, SEEK_SET); |
| 78 } | 78 } |
| 79 | 79 |
| 80 cyg_int32 | 80 cyg_int32 |
| 81 cyg_ldr_fs_close( PELF_OBJECT p ) | 81 cyg_ldr_fs_close(PELF_OBJECT p) |
| 82 { | 82 { |
| 83 return fclose( (FILE*)p->ptr ); | 83 return fclose((FILE*)p->ptr); |
| 84 } | 84 } |
| 85 | 85 |
| 86 PELF_OBJECT | 86 PELF_OBJECT |
| 87 cyg_ldr_open_library_fs( cyg_uint8 *ptr ) | 87 cyg_ldr_open_library_fs(char *ptr) |
| 88 { | 88 { |
| 89 PELF_OBJECT e_obj; | 89 FILE *fp = fopen(ptr, "rb"); |
| 90 FILE *fp; | 90 if (fp == NULL) |
| 91 | |
| 92 fp = fopen( ptr, "rb" ); | |
| 93 if ( fp == 0 ) | |
| 94 { | 91 { |
| 95 cyg_ldr_last_error = "FILE NOT FOUND"; | 92 cyg_ldr_last_error = "FILE NOT FOUND"; |
| 96 return (void*)0; | 93 return (void*)0; |
| 97 } | 94 } |
| 98 | 95 |
| 99 // Create a file object to keep track of this library. | 96 // Create a file object to keep track of this library. |
| 100 e_obj = (PELF_OBJECT)malloc( sizeof( ELF_OBJECT ) ); | 97 PELF_OBJECT e_obj = (PELF_OBJECT)malloc(sizeof(ELF_OBJECT)); |
| 101 CYG_ASSERT( e_obj != 0, "Cannot malloc() e_obj" ); | 98 CYG_ASSERT(e_obj != 0, "Cannot malloc() e_obj"); |
| 102 if ( e_obj == 0 ) | 99 if (e_obj == 0) |
| 103 { | 100 { |
| 104 cyg_ldr_last_error = "ERROR IN MALLOC"; | 101 cyg_ldr_last_error = "ERROR IN MALLOC"; |
| 105 fclose( fp ); | 102 fclose(fp); |
| 106 return (void*)0; | 103 return (void*)0; |
| 107 } | 104 } |
| 108 memset( e_obj, 0, sizeof( ELF_OBJECT ) ); | 105 memset(e_obj, 0, sizeof(ELF_OBJECT)); |
| 109 e_obj->ptr = (CYG_ADDRWORD)fp; | 106 e_obj->ptr = (CYG_ADDRWORD)fp; |
| 110 e_obj->mode = CYG_LDR_MODE_FILESYSTEM; | 107 e_obj->mode = CYG_LDR_MODE_FILESYSTEM; |
| 111 | 108 |
| 112 // Handlers for the file system open. | 109 // Handlers for the file system open. |
| 113 e_obj->read = cyg_ldr_fs_read; | 110 e_obj->read = cyg_ldr_fs_read; |
| 115 e_obj->close = cyg_ldr_fs_close; | 112 e_obj->close = cyg_ldr_fs_close; |
| 116 return e_obj; | 113 return e_obj; |
| 117 } | 114 } |
| 118 | 115 |
| 119 void | 116 void |
| 120 cyg_ldr_close_library_fs( PELF_OBJECT p ) | 117 cyg_ldr_close_library_fs(PELF_OBJECT p) |
| 121 { | 118 { |
| 122 } | 119 } |
| 123 | 120 |
