| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #include <sys/types.h>
- #include <sys/stat.h>
- #include "file.h"
- #include "unistd.h"
- #include "fcntl.h"
- #if 0
- #define LOGE log_e
- #define LOGW log_w
- #define LOGD log_d
- #else
- #define LOGD printf
- #define LOGW printf
- #define LOGE printf
- #endif
- int file_length(char* path)
- {
- int r;
- struct stat st;
- r = stat(path, &st);
- if (r) {
- return -1;
- }
- return st.st_size;
- }
- int file_save(char *path, void *buf, int len)
- {
- int r = 0;
- FILE *fp;
- int fd = open(path,O_RDWR|O_TRUNC,0777);
- write(fd,buf,len);
- close(fd);
- sync();
- #if 0
- fp = fopen(path, "w");
- if(!fp) {
- LOGE("file_save, fopen %s failed\n", path);
- return -1;
- }
- r = fwrite(buf, 1, len, fp);
- if(r!=len) {
- LOGE("file_save %s failed, %d, %d\n", path, r, len);
- r = -1;
- }
- else {
- r = 0;
- }
- fflush(fp);
- fclose(fp);
- sync();
- #endif
- return r;
- }
- int file_load(char* path, buf_t *fbuf)
- {
- int r,flen,blen;
- FILE* fp;
- flen = file_length(path);
- if(flen<=0) {
- LOGE("____ file_load, %s failed\n", path);
- return -1;
- }
- blen = flen+1;
- fbuf->buf = (char*)malloc(blen);
- if(!fbuf->buf) {
- LOGE("____ file_load, %s malloc %d failed\n", path, flen);
- return -1;
- }
- fbuf->dlen = flen;
- fbuf->blen = blen;
- fp = fopen(path, "r");
- if (!fp) {
- LOGE("file_load, fopen %s failed\n", path); free(fbuf->buf);
- free(fbuf->buf);
- return -1;
- }
- r = fread(fbuf->buf, 1, flen, fp);
- if (r != flen) {
- LOGE("file_load %s failed, %d, %d\n", path, r, flen);
- fclose(fp); free(fbuf->buf);
- r = -1;
- }
- else {
- fbuf->buf[flen] = 0; r = 0;
- }
- fclose(fp);
- return r;
- }
- int file_copy(char *dst, char *src)
- {
- int r;
- buf_t fbuf;
- remove(dst);
- r = file_load(src, &fbuf);
- if(r==0) {
- r = file_save(dst, fbuf.buf, fbuf.dlen);
- free(fbuf.buf);
- }
- return r;
- }
- int file_remove(char *path)
- {
- return remove(path);
- }
|