int number = fileSize / sizeof(CallLogInfo);
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize:%d, number:%d", fileSize, number);
- CallLogInfo *callInfo = (CallLogInfo *)OHOS::UIMalloc(fileSize);
- if (callInfo == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
- *info = nullptr;
- *num = 0;
- fclose(fp);
- return OHOS_FAILURE;
- }
- (void)memset_s(callInfo, fileSize, 0, fileSize);
- int ret = fread(callInfo, sizeof(CallLogInfo), number, fp);
- if (ret != number) {
+ for(int i=0;i<number;i++)
+ {
+ CallLogInfo *callInfo = (CallLogInfo *)OHOS::UIMalloc( sizeof(CallLogInfo));
+ if (callInfo == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
+ info[i] = nullptr;
+ *num = 0;
+ fclose(fp);
+ return OHOS_FAILURE;
+ }
+ (void)memset_s(callInfo, sizeof(CallLogInfo), 0, sizeof(CallLogInfo));
+
+ int ret = fread(callInfo, sizeof(CallLogInfo), 1, fp);
+
+ if (ret != 1) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret);
- *info = nullptr;
+ info[i] = nullptr;
*num = 0;
fclose(fp);
return OHOS_FAILURE;
+ }
+ info[i] = callInfo;
}
-
- *info = callInfo;
*num = number;
fclose(fp);
return OHOS_SUCCESS;
}
-// int SaveCallLog(CallLogInfo **info)
-// {
-// FILE *fp = fopen(CALL_LOG_PATH, "wb+");
-// if (fp == nullptr) {
-// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH);
-// return OHOS_FAILURE;
-// }
-
-
-// int number = fileSize / sizeof(CallLogInfo);
-// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fileSize:%d, number:%d", fileSize, number);
-// CallLogInfo *callInfo = (CallLogInfo *)malloc(fileSize);
-// if (callInfo == nullptr) {
-// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
-// *info = nullptr;
-// *num = 0;
-// fclose(fp);
-// return OHOS_FAILURE;
-// }
-// (void)memset_s(callInfo, fileSize, 0, fileSize);
-
-// int ret = fread(callInfo, sizeof(CallLogInfo), number, fp);
-// if (ret != number) {
-// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret);
-// *info = nullptr;
-// *num = 0;
-// fclose(fp);
-// return OHOS_FAILURE;
-// }
-
-// *info = callInfo;
-// *num = number;
-// fclose(fp);
-// return OHOS_SUCCESS;
-// }
+int SaveCallLog(CallLogInfo **info,int num)
+{
+ FILE *fp = fopen(CALL_LOG_PATH, "wb+");
+ if (fp == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[AddToCallLog] fopen %s failed!", CALL_LOG_PATH);
+ return OHOS_FAILURE;
+ }
+ if (info == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] malloc callInfo fail!");
+ return OHOS_FAILURE;
+ }
+ int ret = fwrite(info, sizeof(CallLogInfo), num, fp);
+ if (ret != num) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[GetCallLog] fread fp fail ret:%d", ret);
+
+ fclose(fp);
+ return OHOS_FAILURE;
+ }
+ fclose(fp);
+ return OHOS_SUCCESS;
+}
// 清空通话记录
int ClearCallLogFile(void)