aboutsummaryrefslogtreecommitdiffstats
path: root/src/sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sysfs.c')
-rw-r--r--src/sysfs.c114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/sysfs.c b/src/sysfs.c
deleted file mode 100644
index 0b6ad1e..0000000
--- a/src/sysfs.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses. You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-
-#include "ibverbs.h"
-
-static char *sysfs_path;
-
-const char *ibv_get_sysfs_path(void)
-{
- char *env = NULL;
-
- if (sysfs_path)
- return sysfs_path;
-
- /*
- * Only follow use path passed in through the calling user's
- * environment if we're not running SUID.
- */
- if (getuid() == geteuid())
- env = getenv("SYSFS_PATH");
-
- if (env) {
- int len;
-
- sysfs_path = strndup(env, IBV_SYSFS_PATH_MAX);
- len = strlen(sysfs_path);
- while (len > 0 && sysfs_path[len - 1] == '/') {
- --len;
- sysfs_path[len] = '\0';
- }
- } else
- sysfs_path = "/sys";
-
- return sysfs_path;
-}
-
-int ibv_read_sysfs_file(const char *dir, const char *file,
- char *buf, size_t size)
-{
- char *path;
- int fd;
- int len;
-
- if (asprintf(&path, "%s/%s", dir, file) < 0)
- return -1;
-
- fd = open(path, O_RDONLY | O_CLOEXEC);
- if (fd < 0) {
- free(path);
- return -1;
- }
-
- len = read(fd, buf, size);
-
- close(fd);
- free(path);
-
- if (len > 0) {
- if (buf[len - 1] == '\n')
- buf[--len] = '\0';
- else if (len < size)
- buf[len] = '\0';
- else
- /* We would have to truncate the contents to NULL
- * terminate, so we are going to fail no matter
- * what we do, either right now or later when
- * we pass around an unterminated string. Fail now.
- */
- return -1;
- }
-
- return len;
-}