/* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //#define LOG_NDEBUG 0 #define LOG_TAG "FoundationUtils" #include #include #include #include #include #include #include #include namespace android { AString uriDebugString(const AString &uri, bool incognito) { if (incognito) { return AString(""); } if (property_get_bool("media.stagefright.log-uri", false)) { return uri; } // find scheme AString scheme; const char *chars = uri.c_str(); for (size_t i = 0; i < uri.size(); i++) { const char c = chars[i]; if (!isascii(c)) { break; } else if (isalpha(c)) { continue; } else if (i == 0) { // first character must be a letter break; } else if (isdigit(c) || c == '+' || c == '.' || c =='-') { continue; } else if (c != ':') { break; } scheme = AString(uri, 0, i); scheme.append("://"); return scheme; } return AString(""); } AString MakeUserAgent() { AString ua; ua.append("stagefright/1.2 (Linux;Android "); #if (PROPERTY_VALUE_MAX < 8) #error "PROPERTY_VALUE_MAX must be at least 8" #endif char value[PROPERTY_VALUE_MAX]; property_get("ro.build.version.release", value, "Unknown"); ua.append(value); ua.append(")"); return ua; } AString nameForFd(int fd) { const size_t SIZE = 256; char buffer[SIZE]; AString result; snprintf(buffer, SIZE, "/proc/%d/fd/%d", getpid(), fd); struct stat s; if (lstat(buffer, &s) == 0) { if ((s.st_mode & S_IFMT) == S_IFLNK) { char linkto[256]; int len = readlink(buffer, linkto, sizeof(linkto)); if(len > 0) { if(len > 255) { linkto[252] = '.'; linkto[253] = '.'; linkto[254] = '.'; linkto[255] = 0; } else { linkto[len] = 0; } result.append(linkto); } } else { result.append("unexpected type for "); result.append(buffer); } } else { result.append("couldn't open "); result.append(buffer); } return result; } } // namespace android