1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/* Copyright INRIA/ENPC */
#include <string.h>
#include "../machine.h"
#ifdef WIN32
#if !(defined __CYGWIN32__) && !(defined __ABSC__)
#include <direct.h>
#define chdir(x) _chdir(x)
#define GETCWD(x,y) _getcwd(x,y)
#else
#ifndef __ABSC__
#include <unistd.h>
extern void sciprint(char *fmt,...);
#define GETCWD(x,y) getcwd(x,y)
#else
#define GETCWD(x,y) getcwd_(x,y)
#endif
#endif
#endif
#define FSIZE 1024
static char cur_dir[FSIZE];
#if defined(SYSV) || defined(SVR4)
extern char *getcwd();
#define GETCWD(x,y) getcwd(x,y)
#else
#ifndef WIN32
extern char *getwd();
#define GETCWD(x,y) getwd(x)
#endif
#endif
/*******************************
* Changes scilab current directory
*******************************/
int C2F(scichdir)(path,err)
char *path;
int *err;
{
*err=0;
if (path == (char*) 0) {
*cur_dir = '\0';
return (0);
}
#ifndef __ABSC__
if (chdir(path) == -1) {
#else
if (chdir_(path,strlen(path)) != 0) {
#endif
sciprint("Can't go to directory %s \r\n", path);
/** XXX : a remettre , sys_errlist[errno]); **/
*err=1;
}
/** a rajouter en XWindow ? pour transmettre l'info au menu
if (get_directory()==0)
*err=1; **/
return 0;
}
/*******************************
* Get scilab current directory
*******************************/
int C2F(scigetcwd)(path,lpath,err)
char **path;
int *lpath;
int *err;
{
#ifndef __ABSC__
if (GETCWD(cur_dir, 1024) == (char*) 0)
#else
if (GETCWD(cur_dir, 1024) != 0)
#endif
{ /* get current working dir */
sciprint("Can't get current directory\r\n");
*cur_dir = '\0';
*lpath=0;
*err=1;
}
else
{
#ifndef __ABSC__
*path= cur_dir;
*lpath=strlen(cur_dir);
#else
*path=strtok(cur_dir," ");
*lpath=strlen(*path);
#endif
*err=0;
}
return 0;
}
|