git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4176 3789f03b-4d11-0410-bbf8-ca57d06f2519tags/v1.0.90
@@ -2,4 +2,5 @@ include_directories(${CMAKE_SOURCE_DIR}/common) | |||
add_library(os STATIC | |||
print.c | |||
net.c) | |||
net.c | |||
os.cxx) |
@@ -1,8 +1,8 @@ | |||
noinst_LTLIBRARIES = libos.la | |||
HDRS = net.h print.h | |||
HDRS = net.h print.h os.h | |||
libos_la_SOURCES = $(HDRS) print.c net.c | |||
libos_la_SOURCES = $(HDRS) print.c net.c os.cxx | |||
libos_la_CPPFLAGS = -I$(top_srcdir)/common | |||
@@ -0,0 +1,64 @@ | |||
/* Copyright (C) 2010 TightVNC Team. All Rights Reserved. | |||
* | |||
* This is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This software 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. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this software; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |||
* USA. | |||
*/ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <os/os.h> | |||
#include <assert.h> | |||
#include <pwd.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <sys/types.h> | |||
#include <unistd.h> | |||
int gethomedir(char **dirp) | |||
{ | |||
char *homedir, *dir; | |||
size_t len; | |||
uid_t uid; | |||
struct passwd *passwd; | |||
assert(dirp != NULL && *dirp == NULL); | |||
#ifdef WIN32 | |||
/* Not supported, yet */ | |||
return -1; | |||
#endif | |||
homedir = getenv("HOME"); | |||
if (homedir == NULL) { | |||
uid = getuid(); | |||
passwd = getpwuid(uid); | |||
if (passwd == NULL) { | |||
/* Do we want emit error msg here? */ | |||
return -1; | |||
} | |||
homedir = passwd->pw_dir; | |||
} | |||
len = strlen(homedir) + 1; | |||
dir = new char[len]; | |||
memcpy(dir, homedir, len); | |||
*dirp = dir; | |||
return 0; | |||
} | |||
@@ -0,0 +1,36 @@ | |||
/* Copyright (C) 2010 TightVNC Team. All Rights Reserved. | |||
* | |||
* This is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This software 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. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this software; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |||
* USA. | |||
*/ | |||
#ifndef OS_OS_H | |||
#define OS_OS_H | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
/* | |||
* Get home directory. If HOME environment variable is set then it is returned. | |||
* Otherwise home directory is obtained via getpwuid function. | |||
* | |||
* Returns: | |||
* 0 - Success | |||
* -1 - Failure | |||
*/ | |||
int gethomedir(char **dirp); | |||
#endif /* OS_OS_H */ |