Changeset 361 for trunk/src/gmake


Ignore:
Timestamp:
Dec 13, 2005, 5:42:38 AM (20 years ago)
Author:
bird
Message:

Ported to MSC

Location:
trunk/src/gmake/kmkbuiltin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gmake/kmkbuiltin/mkdir.c

    r299 r361  
    3939#endif /* not lint */
    4040#endif
     41#ifndef _MSC_VER
    4142#include <sys/cdefs.h>
     43#endif
    4244//__FBSDID("$FreeBSD: src/bin/mkdir/mkdir.c,v 1.28 2004/04/06 20:06:48 markm Exp $");
    4345
     
    4749//#include <err.h>
    4850#include <errno.h>
     51#ifndef _MSC_VER
    4952#include <libgen.h>
     53#endif
    5054#include <stdio.h>
    5155#include <stdlib.h>
    5256#include <string.h>
     57#ifndef _MSC_VER
    5358#include <sysexits.h>
    5459#include <unistd.h>
     60#endif
     61
     62#ifdef _MSC_VER
     63#define setmode setmode_msc
     64#include <stdarg.h>
     65#include <io.h>
     66#include <direct.h>
     67#undef setmode
     68#include "getopt.h"
     69
     70typedef int mode_t;
     71#define EX_USAGE 1
     72void warn(const char *fmt, ...)
     73{
     74    int err = errno;
     75    va_list args;
     76    va_start(args, fmt);
     77    fprintf(stderr, "mkdir: ");
     78    vfprintf(stderr, fmt, args);
     79    fprintf(stderr, ": %s\n", strerror(err));
     80    va_end(args);
     81}
     82
     83int mkdir_msc(const char *path, mode_t mode)
     84{
     85    int rc = mkdir(path);
     86    if (rc)
     87    {
     88        int len = strlen(path);
     89        if (len > 0 && (path[len - 1] == '/' || path[len - 1] == '\\'))
     90        {
     91            char *str = strdup(path);
     92            while (len > 0 && (str[len - 1] == '/' || str[len - 1] == '\\'))
     93                str[--len] = '\0';
     94            rc = mkdir(str);
     95            free(str);
     96        }
     97    }
     98    return rc;
     99}
     100#define mkdir(a,b) mkdir_msc(a,b)
     101
     102char *dirname(char *path)
     103{         
     104    return path;
     105}
     106
     107#define S_ISDIR(m)  (((m) & _S_IFMT) == _S_IFDIR)
     108#define S_IRWXG 0000070
     109#define S_IRWXO 0000007
     110#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
     111#define S_IXUSR _S_IEXEC
     112#define S_IWUSR _S_IWRITE
     113#define S_IRUSR _S_IREAD
     114
     115#endif
    55116
    56117extern void * setmode(const char *p);
  • trunk/src/gmake/kmkbuiltin/setmode.c

    r227 r361  
    3838static char sccsid[] = "@(#)setmode.c   8.2 (Berkeley) 3/25/94";
    3939#endif /* LIBC_SCCS and not lint */
     40#ifndef _MSC_VER
    4041#include <sys/cdefs.h>
     42#endif
    4143//__FBSDID("$FreeBSD: src/lib/libc/gen/setmode.c,v 1.9 2003/02/23 00:24:03 mikeh Exp $");
    4244
     
    4951#include <stddef.h>
    5052#include <stdlib.h>
     53#ifndef _MSC_VER
    5154#include <unistd.h>
     55#endif
    5256
    5357#ifdef SETMODE_DEBUG
     
    5559#endif
    5660//#include "un-namespace.h"
     61
     62#ifdef _MSC_VER
     63#define setmode setmode_msc
     64#include <io.h>
     65#undef setmode
     66typedef unsigned int u_int;
     67typedef int mode_t;
     68#define S_ISDIR(m)  (((m) & _S_IFMT) == _S_IFDIR)
     69#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
     70#define S_IXUSR _S_IEXEC
     71#define S_IWUSR _S_IWRITE
     72#define S_IRUSR _S_IREAD
     73#define S_IRWXG 0000070
     74#define S_IRGRP 0000040
     75#define S_IWGRP 0000020
     76#define S_IXGRP 0000010
     77#define S_IRWXO 0000007
     78#define S_IROTH 0000004
     79#define S_IWOTH 0000002
     80#define S_IXOTH 0000001
     81#define S_ISUID 0004000
     82#define S_ISGID 0002000
     83#endif /* _MSC_VER */
     84
    5785
    5886#define SET_LEN 6               /* initial # of bitcmd struct to malloc */
     
    187215        char op, *ep;
    188216        BITCMD *set, *saveset, *endset;
     217#ifndef _MSC_VER
    189218        sigset_t sigset, sigoset;
     219#endif
    190220        mode_t mask;
    191221        int equalopdone=0, permXbits, setlen;
     
    201231         * as best we can.
    202232         */
     233#ifndef _MSC_VER
    203234        sigfillset(&sigset);
    204235        (void)sigprocmask(SIG_BLOCK, &sigset, &sigoset);
     236#endif
    205237        (void)umask(mask = umask(0));
    206238        mask = ~mask;
     239#ifndef _MSC_VER
    207240        (void)sigprocmask(SIG_SETMASK, &sigoset, NULL);
     241#endif
    208242
    209243        setlen = SET_LEN + 2;
Note: See TracChangeset for help on using the changeset viewer.