Hi Marcel,
On Thu, Sep 23, 2010 at 09:41:46PM +0900, Marcel Holtmann wrote:
> > --- a/src/stats.c
> > +++ b/src/stats.c
> > @@ -250,11 +250,12 @@ static int stats_open_file(struct connman_service
> > *service,
> > struct stats_file *file,
> > connman_bool_t roaming)
> > {
> > - struct stat stat;
> > + struct stat buf;
>
> please don't. The common declaration here is this:
>
> struct stat st;
>
> And buf is the worst variable name you could have picked ;)
I completely agree. I was pondering what cool name I could use and
found in the man pages:
int stat(const char *path, struct stat *buf);
>
> > char *name;
> > int err;
> > size_t size;
> > struct stats_file_header *hdr;
> > + connman_bool_t new_file = FALSE;
> >
> > if (roaming == FALSE) {
> > name = g_strdup_printf("%s/%s.data", STORAGEDIR,
> > @@ -265,6 +266,13 @@ static int stats_open_file(struct connman_service
> > *service,
> > }
> >
> > file->name = name;
> > +
> > + err = stat(file->name, &buf);
> > + if (err < 0) {
> > + /* according documentation the only possible error is ENOENT */
> > + new_file = TRUE;
> > + }
> > +
> > file->fd = open(name, O_RDWR | O_CREAT, 0644);
> >
> > if (file->fd == -1) {
>
> I prefer these checks like this btw.:
>
> if (fd < 0)
> error...
yep, I'm changing this
> > @@ -275,14 +283,11 @@ static int stats_open_file(struct connman_service
> > *service,
> >
> > file->max_len = STATS_MAX_FILE_SIZE;
> >
> > - err = fstat(file->fd, &stat);
> > - if (err < 0)
> > - return -errno;
> > -
> > - if (stat.st_size < sysconf(_SC_PAGESIZE))
> > + if (buf.st_size < sysconf(_SC_PAGESIZE))
> > size = sysconf(_SC_PAGESIZE);
> > else
> > - size = (size_t)stat.st_size;
> > + size = (size_t)buf.st_size;
> > +
>
> What is this cast for. I don't really like casts like this.
left overs...
>
> > err = stats_file_remap(file, size);
> > if (err < 0)
> > @@ -290,12 +295,13 @@ static int stats_open_file(struct connman_service
> > *service,
> >
> > hdr = get_hdr(file);
> >
> > - if (hdr->magic != MAGIC ||
> > + if (new_file == TRUE || hdr->magic != MAGIC ||
> > hdr->begin < sizeof(struct stats_file_header) ||
> > hdr->end < sizeof(struct stats_file_header) ||
> > hdr->begin > file->len ||
> > hdr->end > file->len) {
> > - connman_warn("invalid file header for %s", file->name);
> > + if (new_file == FALSE)
> > + connman_warn("invalid file header for %s", file->name);
>
> First check for new_file == TRUE and now for new_file == FALSE. That
> logic seems a bit too complicated for me. Makes my brain hurt ;)
my brain hurts too. maybe the reason for this crap. sorry about this.
an update is on the way.
thanks for the review,
daniel
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman