~dexter/fakechroot/oneiric

« back to all changes in this revision

Viewing changes to src/glob.c

  • Committer: piotr.roszatycki at gmail
  • Date: 2011-12-11 17:04:55 UTC
  • mfrom: (41.1.42 sid)
  • Revision ID: piotr.roszatycki@gmail.com-20111211170455-pawopykjjwr0fjjc
Tags: 2.16-1~ppa1natty1
New upstream release 2.16 for natty

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    libfakechroot -- fake chroot environment
 
3
    Copyright (c) 2010 Piotr Roszatycki <dexter@debian.org>
 
4
 
 
5
    This library is free software; you can redistribute it and/or
 
6
    modify it under the terms of the GNU Lesser General Public
 
7
    License as published by the Free Software Foundation; either
 
8
    version 2.1 of the License, or (at your option) any later version.
 
9
 
 
10
    This library is distributed in the hope that it will be useful,
 
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
    Lesser General Public License for more details.
 
14
 
 
15
    You should have received a copy of the GNU Lesser General Public
 
16
    License along with this library; if not, write to the Free Software
 
17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
 
18
*/
 
19
 
 
20
 
 
21
#include <config.h>
 
22
 
 
23
#include <glob.h>
 
24
#include "libfakechroot.h"
 
25
 
 
26
 
 
27
wrapper(glob, int, (const char * pattern, int flags, int (* errfunc) (const char *, int), glob_t * pglob))
 
28
{
 
29
    int rc, i;
 
30
    char tmp[FAKECHROOT_PATH_MAX], *tmpptr;
 
31
    char *fakechroot_path, *fakechroot_ptr, fakechroot_buf[FAKECHROOT_PATH_MAX];
 
32
 
 
33
    debug("glob(\"%s\", %d, &errfunc, &pglob)", pattern, flags);
 
34
    expand_chroot_path(pattern, fakechroot_path, fakechroot_buf);
 
35
 
 
36
    rc = nextcall(glob)(pattern, flags, errfunc, pglob);
 
37
    if (rc < 0)
 
38
        return rc;
 
39
 
 
40
    for (i = 0; i < pglob->gl_pathc; i++) {
 
41
        strcpy(tmp,pglob->gl_pathv[i]);
 
42
        fakechroot_path = getenv("FAKECHROOT_BASE");
 
43
        if (fakechroot_path != NULL) {
 
44
            fakechroot_ptr = strstr(tmp, fakechroot_path);
 
45
            if (fakechroot_ptr != tmp) {
 
46
                tmpptr = tmp;
 
47
            } else {
 
48
                tmpptr = tmp + strlen(fakechroot_path);
 
49
            }
 
50
            strcpy(pglob->gl_pathv[i], tmpptr);
 
51
        }
 
52
    }
 
53
    return rc;
 
54
}