Private
Public Access
2
0

mraa.c added internal helper functions to support globbing and link analysis

Signed-off-by: Michael Ring <mail@michael-ring.org>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Michael Ring
2015-02-15 12:47:11 +01:00
committed by Brendan Le Foll
parent 2965665fee
commit 8e305a1032
2 changed files with 79 additions and 0 deletions

View File

@@ -28,6 +28,8 @@
#include <sched.h>
#include <string.h>
#include <pwd.h>
#include <glob.h>
#include "mraa_internal.h"
#include "gpio.h"
@@ -310,3 +312,55 @@ mraa_get_pin_count()
}
return plat->phy_pin_count;
}
mraa_boolean_t
mraa_file_exist(char *filename) {
glob_t results;
results.gl_pathc = 0;
glob(filename, 0, NULL, &results);
int file_found = results.gl_pathc == 1;
globfree(&results);
return file_found;
}
char*
mraa_file_unglob(char *filename) {
glob_t results;
char *res = NULL;
results.gl_pathc = 0;
glob(filename, 0, NULL, &results);
if (results.gl_pathc == 1)
res = strdup(results.gl_pathv[0]);
globfree(&results);
return res;
}
mraa_boolean_t
mraa_link_targets(char *filename,char *targetname) {
int size = 100;
int nchars = 0;
char *buffer = NULL;
while (nchars == 0)
{
buffer = (char *) realloc(buffer,size);
if (buffer == NULL)
return 0;
nchars = readlink(filename,buffer,size);
if (nchars < 0 ) {
free(buffer);
return 0;
}
if (nchars >= size) {
size *=2;
nchars=0;
}
}
if (strstr(buffer,targetname)) {
free(buffer);
return 1;
}
else {
free(buffer);
return 0;
}
}