From 3e292b9716072cae37bff5b99c1d2660555a265e Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Fri, 20 Feb 2009 07:38:35 -0800 Subject: [PATCH] auto import from //branches/cupcake/...@132569 --- libpixelflinger/scanline.cpp | 4 +- logcat/event-log-tags | 3 ++ vold/misc.c | 92 +++++++----------------------------- 3 files changed, 21 insertions(+), 78 deletions(-) diff --git a/libpixelflinger/scanline.cpp b/libpixelflinger/scanline.cpp index 75b668d37..f70030680 100644 --- a/libpixelflinger/scanline.cpp +++ b/libpixelflinger/scanline.cpp @@ -1256,7 +1256,7 @@ finish: void scanline_t32cb16(context_t* c) { int32_t x = c->iterators.xl; - size_t ct = c->iterators.xr - x; + size_t ct = c->iterators.xr - x; int32_t y = c->iterators.y; surface_t* cb = &(c->state.buffers.color); union { @@ -1282,7 +1282,7 @@ last_one: ct--; } - while (ct > 0) { + while (ct >= 2) { s = GGL_RGBA_TO_HOST( *src++ ); sR = (s >> ( 3))&0x1F; sG = (s >> ( 8+2))&0x3F; diff --git a/logcat/event-log-tags b/logcat/event-log-tags index fb42bfee1..d2eff60fa 100644 --- a/logcat/event-log-tags +++ b/logcat/event-log-tags @@ -341,3 +341,6 @@ # 0 for screen off, 1 for screen on, 2 for key-guard done 70000 screen_toggled (screen_state|1|5) +# browser stats for diary study +70101 browser_zoom_level_change (start level|1|5),(end level|1|5),(time|2|3) +70102 browser_double_tap_duration (duration|1|3),(time|2|3) \ No newline at end of file diff --git a/vold/misc.c b/vold/misc.c index b8e595759..951414c63 100644 --- a/vold/misc.c +++ b/vold/misc.c @@ -49,11 +49,8 @@ void *read_file(char *filename, ssize_t *_size) /* slurp it into our buffer */ ret = read(fd, buffer, size); - if (ret != size) { - free(buffer); - buffer = NULL; + if (ret != size) goto bail; - } /* let the caller know how big it is */ *_size = size; @@ -62,90 +59,33 @@ bail: close(fd); return buffer; } - -char *truncate_sysfs_path(char *path, int count, char *buffer, size_t bufflen) +char *truncate_sysfs_path(char *path, int num_elements_to_remove, char *buffer) { - char* p; + int i; - strlcpy(buffer, path, bufflen); - p = buffer + strlen(buffer); + strcpy(buffer, path); - for ( ; count > 0; count-- ) { - while (p > buffer && p[-1] != '/') { - p--; - } - if (p == buffer) - break; + for (i = 0; i < num_elements_to_remove; i++) { + char *p = &buffer[strlen(buffer)-1]; - p -= 1; + for (p = &buffer[strlen(buffer) -1]; *p != '/'; p--); + *p = '\0'; } - p[0] = '\0'; return buffer; } -/* used to read the first line of a /sys file into a heap-allocated buffer - * this assumes that reading the file returns a list of zero-terminated strings, - * each could also have a terminating \n before the 0 - * - * returns NULL on error, of a new string on success, which must be freed by the - * caller. - */ -char *read_first_line_of(const char* filepath) -{ - char *p, *q, *line; - size_t len; - ssize_t sz; - - p = read_file((char*)filepath, &sz); - if (p == NULL) - goto FAIL; - - /* search end of first line */ - q = memchr(p, sz, '\0'); - if (q == NULL) - q = p + sz; /* let's be flexible */ - - len = (size_t)(q - p); /* compute line length */ - if (len == 0) - goto FAIL; - - if (p[len-1] == '\n') { /* strip trailing \n */ - len -= 1; - if (len == 0) - goto FAIL; - } - - line = malloc(len+1); - if (line == NULL) - goto FAIL; - - memcpy(line, p, len); - line[len] = 0; - free(p); - - return line; - -FAIL: - if (p != NULL) - free(p); - - return NULL; -} - char *read_sysfs_var(char *buffer, size_t maxlen, char *devpath, char *var) { - char filename[255], *line; - - snprintf(filename, sizeof filename, "/sys%s/%s", devpath, var); - - line = read_first_line_of(filename); - if (line == NULL) - return NULL; - - snprintf(buffer, maxlen, "%s", line); - free(line); + char filename[255]; + char *p; + ssize_t sz; + sprintf(filename, "/sys%s/%s", devpath, var); + p = read_file(filename, &sz); + p[(strlen(p) - 1)] = '\0'; + strncpy(buffer, p, maxlen); + free(p); return buffer; }