From 3e292b9716072cae37bff5b99c1d2660555a265e Mon Sep 17 00:00:00 2001
From: The Android Open Source Project <initial-contribution@android.com>
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                  | 90 ++++++------------------------------
 3 files changed, 20 insertions(+), 77 deletions(-)

diff --git a/libpixelflinger/scanline.cpp b/libpixelflinger/scanline.cpp
index 75b668d372..f700306806 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 fb42bfee18..d2eff60fa8 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 b8e595759b..951414c63d 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 *read_sysfs_var(char *buffer, size_t maxlen, char *devpath, char *var)
 {
-    char *p, *q, *line;
-    size_t  len;
+    char filename[255];
+    char *p;
     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;
+    sprintf(filename, "/sys%s/%s", devpath, var);
+    p = read_file(filename, &sz);
+    p[(strlen(p) - 1)] = '\0';
+    strncpy(buffer, p, maxlen);
     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);
-
     return buffer;
 }
 
-- 
GitLab