| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | 
							
- #include <stdlib.h>
 
- #include <stdio.h>
 
- #include "FileIO.h"
 
- // Function  : read all data from file to a buffer.
 
- // Note      : The buffer is malloc in this function and need to be free outside by user !
 
- // Parameter :
 
- //     size_t *p_len        : getting the data length, i.e. the file length.
 
- //     const char *filename : file name
 
- // Return    :
 
- //     non-NULL pointer     : success. Return the data buffer pointer. The data length will be on *p_len
 
- //     NULL                 : failed
 
- uint8_t *loadFromFile (size_t *p_len, const char *filename) {
 
-     size_t   rlen  = 0;
 
-     FILE    *fp    = NULL;
 
-     uint8_t *p_buf = NULL;
 
-     
 
-     *p_len = 0;
 
-     
 
-     fp = fopen(filename, "rb");
 
-     
 
-     if (fp == NULL)
 
-         return NULL;
 
-     if (0 != fseek(fp, 0, SEEK_END)) {
 
-         fclose(fp);
 
-         return NULL;
 
-     }
 
-     
 
-     *p_len = ftell(fp);                  // get file data length
 
-     
 
-     if (0 != fseek(fp, 0, SEEK_SET)) {
 
-         fclose(fp);
 
-         return NULL;
 
-     }
 
-     
 
-     if (*p_len == 0) {                   // special case : file length = 0 (empty file)
 
-         fclose(fp);
 
-         p_buf = (uint8_t*)malloc(1);     // malloc a 1-byte buffer
 
-         return p_buf;                    // directly return it without filling any data
 
-     }
 
-     
 
-     p_buf = (uint8_t*)malloc((*p_len));
 
-     
 
-     if (p_buf == NULL) {
 
-         fclose(fp);
 
-         return NULL;
 
-     }
 
-     
 
-     rlen = fread(p_buf, sizeof(uint8_t), (*p_len), fp);
 
-     
 
-     fclose(fp);
 
-     
 
-     if (rlen != (*p_len)) {             // actual readed length is not equal to expected readed length
 
-         free(p_buf);
 
-         return NULL;
 
-     }
 
-     
 
-     return p_buf;
 
- }
 
- // Function  : write data from buffer to a file.
 
- // Parameter :
 
- //     const uint8_t *p_buf : data buffer pointer
 
- //     size_t len           : data length
 
- //     const char *filename : file name
 
- // Return    :
 
- //     0 : failed
 
- //     1 : success
 
- int saveToFile (const uint8_t *p_buf, size_t len, const char *filename) {
 
-     size_t  wlen = 0;
 
-     FILE   *fp;
 
-     
 
-     fp = fopen(filename, "wb");
 
-     
 
-     if (fp == NULL)
 
-         return 1;
 
-     
 
-     if (len > 0)
 
-         wlen = fwrite(p_buf, sizeof(uint8_t), len, fp);
 
-     
 
-     fclose(fp);
 
-     
 
-     if (wlen != len)
 
-         return 1;
 
-     
 
-     return 0;
 
- }
 
 
  |