00001
00002
00003
00004
00005 #include <stdio.h>
00006 #include <stdlib.h>
00007 #include <string.h>
00008 #include "SCIHOME.h"
00009 #include "MALLOC.h"
00010 #include "version.h"
00011 #include "machine.h"
00012
00013 #include "../../../io/includes/createdir.h"
00014 #include "../../../io/includes/getenvc.h"
00015
00016 #ifndef MAX_PATH
00017 #define MAX_PATH 260
00018 #endif
00019 #if (defined _MSC_VER)
00020 #undef putenv
00021 #define putenv(x) _putenv(x)
00022 #endif
00023
00024 static char SCIHOMEPATH[MAX_PATH*2]="empty_SCIHOME";
00025
00026 BOOL setSCIHOME(void)
00027 {
00028 BOOL bOK=FALSE;
00029 int ierr=0;
00030 int buflen=MAX_PATH;
00031 int iflag=0;
00032
00033 char SCIHOME[MAX_PATH];
00034 char USERPATHSCILAB[MAX_PATH];
00035
00036 C2F(getenvc)(&ierr,"SCIHOME",SCIHOME,&buflen,&iflag);
00037
00038 if (ierr)
00039 {
00040 #ifdef _MSC_VER
00041 #define DIRSEPARATOR "\\"
00042 #define BASEDIR "Scilab"
00043 #else
00044 #define DIRSEPARATOR "/"
00045 #define BASEDIR ".Scilab"
00046 #endif
00047
00048 char env[MAX_PATH+1+10];
00049 char USERHOMESYSTEM[MAX_PATH];
00050 iflag=1;
00051
00052 #ifdef _MSC_VER
00053 C2F(getenvc)(&ierr,"USERPROFILE",USERHOMESYSTEM,&buflen,&iflag);
00054 #else
00055 C2F(getenvc)(&ierr,"HOME",USERHOMESYSTEM,&buflen,&iflag);
00056 #endif
00057
00058
00059 if (ierr) {return bOK; }
00060 else
00061 {
00062 sprintf(USERPATHSCILAB,"%s%s%s",USERHOMESYSTEM,DIRSEPARATOR,BASEDIR);
00063 sprintf(SCIHOMEPATH,"%s%s%s",USERPATHSCILAB,DIRSEPARATOR,SCI_VERSION_STRING);
00064 }
00065 sprintf(env,"SCIHOME=%s",SCIHOMEPATH);
00066 putenv(env);
00067 }
00068 else
00069 {
00070 strcpy(SCIHOMEPATH,SCIHOME);
00071 }
00072
00073 if (!ExistDir(SCIHOMEPATH))
00074 {
00075 if(!ExistDir(USERPATHSCILAB)) CreateDir(USERPATHSCILAB);
00076 if (CreateDir(SCIHOMEPATH))
00077 {
00078 bOK=TRUE;
00079 return bOK;
00080 }
00081 }
00082 else bOK=TRUE;
00083
00084 return bOK;
00085 }
00086
00087 char *getSCIHOME(void)
00088 {
00089 char *retSCIHOME=NULL;
00090 retSCIHOME=(char*)MALLOC(sizeof(char)*(strlen(SCIHOMEPATH)+1));
00091 strcpy(retSCIHOME,SCIHOMEPATH);
00092 return retSCIHOME;
00093 }
00094