Function for reading persist file chunk header.

pull/1203/head
Roger A. Light 7 years ago
parent ee5412b060
commit a0e54ac065

@ -114,6 +114,7 @@ struct P_retain{
int persist__read_string(FILE *db_fptr, char **str);
int persist__chunk_header_read_v234(FILE *db_fptr, int *chunk, int *length);
int persist__client_chunk_read_v234(FILE *db_fptr, struct P_client *chunk, int db_version);
int persist__client_msg_chunk_read_v234(FILE *db_fptr, struct P_client_msg *chunk);
int persist__msg_store_chunk_read_v234(FILE *db_fptr, struct P_msg_store *chunk, int db_version);

@ -305,6 +305,13 @@ static int persist__sub_chunk_restore(struct mosquitto_db *db, FILE *db_fptr)
return rc;
}
int persist__chunk_header_read(FILE *db_fptr, int *chunk, int *length)
{
return persist__chunk_header_read_v234(db_fptr, chunk, length);
}
int persist__restore(struct mosquitto_db *db)
{
FILE *fptr;
@ -312,8 +319,8 @@ int persist__restore(struct mosquitto_db *db)
int rc = 0;
uint32_t crc;
dbid_t i64temp;
uint32_t i32temp, length;
uint16_t i16temp, chunk;
uint32_t i32temp;
int chunk, length;
uint8_t i8temp;
ssize_t rlen;
char *err;
@ -358,10 +365,7 @@ int persist__restore(struct mosquitto_db *db)
}
}
while(rlen = fread(&i16temp, sizeof(uint16_t), 1, fptr), rlen == 1){
chunk = ntohs(i16temp);
read_e(fptr, &i32temp, sizeof(uint32_t));
length = ntohl(i32temp);
while(persist__chunk_header_read(fptr, &chunk, &length) == MOSQ_ERR_SUCCESS){
switch(chunk){
case DB_CHUNK_CFG:
read_e(fptr, &i8temp, sizeof(uint8_t)); // shutdown

@ -36,6 +36,25 @@ Contributors:
#include "util_mosq.h"
int persist__chunk_header_read_v234(FILE *db_fptr, int *chunk, int *length)
{
size_t rlen;
uint16_t i16temp;
uint32_t i32temp;
rlen = fread(&i16temp, sizeof(uint16_t), 1, db_fptr);
if(rlen != 1) return 1;
rlen = fread(&i32temp, sizeof(uint32_t), 1, db_fptr);
if(rlen != 1) return 1;
*chunk = ntohs(i16temp);
*length = ntohl(i32temp);
return MOSQ_ERR_SUCCESS;
}
int persist__client_chunk_read_v234(FILE *db_fptr, struct P_client *chunk, int db_version)
{
uint16_t i16temp;

Loading…
Cancel
Save