deprecated readdir_r with readdir

This commit is contained in:
Olof Hagsand 2018-08-05 16:34:45 +02:00
parent 7564bcd9b2
commit bb6d043d6c
6 changed files with 23 additions and 30 deletions

View file

@ -103,10 +103,10 @@ You can change where CLixon looks for the configuration FILE as follows:
## Can I run Clixon as docker containers?
Yes, the example works as docker containers as well. There should be a
prepared container in docker hib for the example where the backend and
prepared container in docker hub for the example where the backend and
CLI is bundled.
```
sudo docker run -ti --rm olofhagsand/clixon_example
sudo docker run -td olofhagsand/clixon_example
```
Look in the example documentation for more info.

View file

@ -40,8 +40,6 @@ RUN apt-get update && apt-get install -y \
libfcgi-dev \
libcurl4-openssl-dev
RUN groupadd clicon
# Create a directory to hold source-code, dependencies etc
RUN mkdir /clixon
WORKDIR /clixon

View file

@ -56,6 +56,7 @@ distclean: clean
docker:
sudo docker build -t $(IMAGE) .
@echo "cd ../example; make docker to build example application"
push:
sudo docker push $(IMAGE)

View file

@ -34,8 +34,11 @@
FROM olofhagsand/clixon
MAINTAINER Olof Hagsand <olof@hagsand.se>
RUN apt-get update && apt-get install -y \
procps # ps for debugging
#RUN apt-get update && apt-get install -y procps # ps for debugging
# The example uses "clicon" group
RUN groupadd clicon
# Create a directory to hold source-code, dependencies etc
RUN mkdir /example
WORKDIR /example
@ -53,7 +56,8 @@ RUN make
RUN make install
RUN install example.xml /usr/local/etc/clixon.xml
CMD /usr/local/sbin/clixon_backend && /usr/local/bin/clixon_cli
# Log to stderr. Add -D 1 for debug
CMD /usr/local/sbin/clixon_backend -F -a IPv4 -u 0.0.0.0 -s init -l e

View file

@ -198,19 +198,13 @@ The example contains some stubs for authorization according to [RFC8341(NACM)](h
Example systemd files for backend and restconf daemons are found under the systemd directory. Install them under /etc/systemd/system for example.
## Run as docker container
(Note not updated)
```
cd docker
# look in README
```
## Docker
Run the example as a docker container as follows:
Run the example as a docker container and access it from a host CLI as follows:
```
sudo docker run -ti --rm olofhagsand/clixon_example
ID=$(sudo docker run -td olofhagsand/clixon_example)
IP=$(sudo docker inspect -f '{{.NetworkSettings.IPAddress }}' $ID)
clixon_cli -a IPv4 -u $IP -f ./example.xml
```
Build the container and push yourself: First change the IMAGE variable in Makefile (eg to "you/clixon_example). Then build and push:
@ -220,5 +214,9 @@ make push
sudo docker run -ti --rm you/clixon_example
```
Note that the configuration database is internal in the container, so
it is deleted if the container is restarted. To make the configuration
database persistent, you need to mount running_db using `-v`

View file

@ -112,8 +112,7 @@ clicon_file_dirent(const char *dir,
char errbuf[128];
char filename[MAXPATHLEN];
struct stat st;
struct dirent dent;
struct dirent *dresp;
struct dirent *dent;
struct dirent *tmp;
struct dirent *new = NULL;
struct dirent *dvecp = NULL;
@ -132,22 +131,15 @@ clicon_file_dirent(const char *dir,
clicon_err(OE_UNIX, errno, "opendir(%s)", dir);
goto quit;
}
for (res = readdir_r(dirp, &dent, &dresp);
dresp;
res = readdir_r(dirp, &dent, &dresp)) {
if (res != 0) {
clicon_err(OE_UNIX, 0, "readdir: %s", strerror(errno));
goto quit;
}
while((dent = readdir(dirp)) != NULL) {
/* Filename matching */
if (regexp) {
if (regexec(&re, dent.d_name, (size_t) 0, NULL, 0) != 0)
if (regexec(&re, dent->d_name, (size_t) 0, NULL, 0) != 0)
continue;
}
/* File type matching */
if (type) {
snprintf(filename, MAXPATHLEN-1, "%s/%s", dir, dent.d_name);
snprintf(filename, MAXPATHLEN-1, "%s/%s", dir, dent->d_name);
res = lstat(filename, &st);
if (res != 0) {
clicon_err(OE_UNIX, 0, "lstat: %s", strerror(errno));
@ -161,7 +153,7 @@ clicon_file_dirent(const char *dir,
goto quit;
}
new = tmp;
memcpy(&new[nent], &dent, sizeof(dent));
memcpy(&new[nent], dent, sizeof(*dent));
nent++;
} /* while */