aboutsummaryrefslogtreecommitdiffstats
path: root/android/user-config.c
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 14:04:15 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 14:04:15 -0800
commitbae1bc39312d5019bd9a5b8d840a529213a69a17 (patch)
treeaed2580b00553aa307704f44050708f29bf3ac66 /android/user-config.c
parentee2298a313b6e425d6ff0324be6a313b1cd9a399 (diff)
downloadexternal_qemu-bae1bc39312d5019bd9a5b8d840a529213a69a17.zip
external_qemu-bae1bc39312d5019bd9a5b8d840a529213a69a17.tar.gz
external_qemu-bae1bc39312d5019bd9a5b8d840a529213a69a17.tar.bz2
auto import from //depot/cupcake/@132589
Diffstat (limited to 'android/user-config.c')
-rw-r--r--android/user-config.c212
1 files changed, 0 insertions, 212 deletions
diff --git a/android/user-config.c b/android/user-config.c
deleted file mode 100644
index acd1a27..0000000
--- a/android/user-config.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/* Copyright (C) 2009 The Android Open Source Project
-**
-** This software is licensed under the terms of the GNU General Public
-** License version 2, as published by the Free Software Foundation, and
-** may be copied, distributed, and modified under those terms.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-*/
-#include "android/user-config.h"
-#include "android/utils/bufprint.h"
-#include "android/utils/debug.h"
-#include "android/utils/system.h"
-#include "android/utils/path.h"
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/time.h>
-
-#define D(...) VERBOSE_PRINT(init,__VA_ARGS__)
-
-#if 0 /* set to 1 for more debugging */
-# define DD(...) D(__VA_ARGS__)
-#else
-# define DD(...) ((void)0)
-#endif
-
-struct AUserConfig {
- ABool changed;
- int windowX;
- int windowY;
- uint64_t uuid;
- char* iniPath;
-};
-
-/* Name of the user-config file */
-#define USER_CONFIG_FILE "emulator-user.ini"
-
-#define KEY_WINDOW_X "window.x"
-#define KEY_WINDOW_Y "window.y"
-#define KEY_UUID "uuid"
-
-#define DEFAULT_X 100
-#define DEFAULT_Y 100
-
-/* Create a new AUserConfig object from a given AvdInfo */
-AUserConfig*
-auserConfig_new( AvdInfo* info )
-{
- AUserConfig* uc;
- char inAndroidBuild = avdInfo_inAndroidBuild(info);
- char needUUID = 1;
- char temp[PATH_MAX], *p=temp, *end=p+sizeof(temp);
- char* parentPath;
- IniFile* ini = NULL;
-
- ANEW0(uc);
-
- /* If we are in the Android build system, store the configuration
- * in ~/.android/emulator-user.ini. otherwise, store it in the file
- * emulator-user.ini in the AVD's content directory.
- */
- if (inAndroidBuild) {
- p = bufprint_config_file(temp, end, USER_CONFIG_FILE);
- } else {
- p = bufprint(temp, end, "%s/%s", avdInfo_getContentPath(info),
- USER_CONFIG_FILE);
- }
-
- /* handle the unexpected */
- if (p >= end) {
- /* Hmmm, something is weird, let's use a temporary file instead */
- p = bufprint_temp_file(temp, end, USER_CONFIG_FILE);
- if (p >= end) {
- derror("Weird: Cannot create temporary user-config file?");
- exit(2);
- }
- dwarning("Weird: Content path too long, using temporary user-config.");
- }
-
- uc->iniPath = ASTRDUP(temp);
- DD("looking user-config in: %s", uc->iniPath);
-
-
- /* ensure that the parent directory exists */
- parentPath = path_parent(uc->iniPath, 1);
- if (parentPath == NULL) {
- derror("Weird: Can't find parent of user-config file: %s",
- uc->iniPath);
- exit(2);
- }
-
- if (!path_exists(parentPath)) {
- if (!inAndroidBuild) {
- derror("Weird: No content path for this AVD: %s", parentPath);
- exit(2);
- }
- DD("creating missing directory: %s", parentPath);
- if (path_mkdir_if_needed(parentPath, 0755) < 0) {
- derror("Using empty user-config, can't create %s: %s",
- parentPath, strerror(errno));
- exit(2);
- }
- }
-
- if (path_exists(uc->iniPath)) {
- DD("reading user-config file");
- ini = iniFile_newFromFile(uc->iniPath);
- if (ini == NULL) {
- dwarning("Can't read user-config file: %s\nUsing default values",
- uc->iniPath);
- }
- }
-
- if (ini != NULL) {
- uc->windowX = iniFile_getInteger(ini, KEY_WINDOW_X, DEFAULT_X);
- DD(" found %s = %d", KEY_WINDOW_X, uc->windowX);
-
- uc->windowY = iniFile_getInteger(ini, KEY_WINDOW_Y, DEFAULT_Y);
- DD(" found %s = %d", KEY_WINDOW_Y, uc->windowY);
-
- if (iniFile_getValue(ini, KEY_UUID) != NULL) {
- uc->uuid = (uint64_t) iniFile_getInt64(ini, KEY_UUID, 0LL);
- needUUID = 0;
- DD(" found %s = %lld", KEY_UUID, uc->uuid);
- }
-
- iniFile_free(ini);
- }
- else {
- uc->windowX = DEFAULT_X;
- uc->windowY = DEFAULT_Y;
- uc->changed = 1;
- }
-
- /* Generate a 64-bit UUID if necessary. We simply take the
- * current time, which avoids any privacy-related value.
- */
- if (needUUID) {
- struct timeval tm;
-
- gettimeofday( &tm, NULL );
- uc->uuid = (uint64_t)tm.tv_sec*1000 + tm.tv_usec/1000;
- uc->changed = 1;
- DD(" Generated UUID = %lld", uc->uuid);
- }
-
- return uc;
-}
-
-
-uint64_t
-auserConfig_getUUID( AUserConfig* uconfig )
-{
- return uconfig->uuid;
-}
-
-void
-auserConfig_getWindowPos( AUserConfig* uconfig, int *pX, int *pY )
-{
- *pX = uconfig->windowX;
- *pY = uconfig->windowY;
-}
-
-
-void
-auserConfig_setWindowPos( AUserConfig* uconfig, int x, int y )
-{
- if (x != uconfig->windowX || y != uconfig->windowY) {
- uconfig->windowX = x;
- uconfig->windowY = y;
- uconfig->changed = 1;
- }
-}
-
-/* Save the user configuration back to the content directory.
- * Should be used in an atexit() handler */
-void
-auserConfig_save( AUserConfig* uconfig )
-{
- IniFile* ini;
- char temp[256];
-
- if (uconfig->changed == 0) {
- D("User-config was not changed.");
- return;
- }
-
- bufprint(temp, temp+sizeof(temp),
- "%s = %d\n"
- "%s = %d\n"
- "%s = %lld\n",
- KEY_WINDOW_X, uconfig->windowX,
- KEY_WINDOW_Y, uconfig->windowY,
- KEY_UUID, uconfig->uuid );
-
- DD("Generated user-config file:\n%s", temp);
-
- ini = iniFile_newFromMemory(temp, uconfig->iniPath);
- if (ini == NULL) {
- D("Weird: can't create user-config iniFile?");
- return;
- }
- if (iniFile_saveToFile(ini, uconfig->iniPath) < 0) {
- dwarning("could not save user configuration: %s: %s",
- uconfig->iniPath, strerror(errno));
- } else {
- D("User configuration saved to %s", uconfig->iniPath);
- }
- iniFile_free(ini);
-}