Browse Source

[Development] Introduce gethomedir() function to retrieve home directory path.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4176 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.0.90
Adam Tkac 13 years ago
parent
commit
b56a69c7fd
4 changed files with 104 additions and 3 deletions
  1. 2
    1
      common/os/CMakeLists.txt
  2. 2
    2
      common/os/Makefile.am
  3. 64
    0
      common/os/os.cxx
  4. 36
    0
      common/os/os.h

+ 2
- 1
common/os/CMakeLists.txt View File

@@ -2,4 +2,5 @@ include_directories(${CMAKE_SOURCE_DIR}/common)

add_library(os STATIC
print.c
net.c)
net.c
os.cxx)

+ 2
- 2
common/os/Makefile.am View File

@@ -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


+ 64
- 0
common/os/os.cxx View File

@@ -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;
}


+ 36
- 0
common/os/os.h View File

@@ -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 */

Loading…
Cancel
Save