function makeinstall(varargin) % MAKEINSTALL creates a toolbox installation file. % Use MAKEINSTALL to create a INSTALL.M file, which % will include a simple installation script and all the % Matlab files which are needed for the toolbox. If the % CONTENTS.M file is missing, it will be automatically % created. Furthermore the command TBCLEAN will be added to % the toolbox folder, which enables to remove the toolbox % folder and the startup entries. % % Call MAKEINSTALL in the toolbox folder or specify this % folder with MAKEINSTALL TB-FOLDER. % % In order to initialize some needed variables, call this % programme the first time and then modify the entries in % the automatically created resource file MAKEINSTALL.RC. % You may change the entries in MAKEINSTALL.RC for your % convenience. % % Please note, that further files will be automatically % generated in the toolbox folder if they do not exist yet: % CONTENTS.M, INFO.XML and TBCLEAN.M. % % The contents of CONTENTS.M will be generated from the help % lines in the M-files. If there are no help lines or if % this help text is not correctly placed, a warning message % will occur. Please ensure that the help text corresponds % with the predefined structure of M-files: % % function p = angle(h) % % ANGLE Polar angle. % % ANGLE(H) returns the phase angles, in radians, of % % a matrix with complex elements. Use ABS for the % % magnitudes. % p = atan2(imag(h),real(h)); % % where there is a first help line (H1) below the function % line and a following help text. The H1 line is used also % by other functions like LOOKFOR. If you like to generate % CONTENTS.M automatically with MAKEINSTALL although % CONTENTS.M already exists, you have to remove the old % CONTENTS.M file. Thus, manual modifications will be kept. % % The contents of INFO.XML can be modified with some % variables in the resource file MAKEINSTALL.RC. However, % you have to remove the old INFO.XML file, if you like to % modify it the next time with MAKEINSTALL. Thus, manual % modifications will be preserved. % % This programme is free software under the BSD License. % To view the text of this license, type % MAKEINSTALL BSD. % Copyright (c) 2008-2023 % Norbert Marwan, Potsdam Institute for Climate Impact Research, Germany % https://tocsy.pik-potsdam.de/makeinstall.php % % Copyright (c) 2002-2008 % Norbert Marwan, Potsdam University, Germany % http://www.agnld.uni-potsdam.de % % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions % are met: % % * Redistributions of source code must retain the above % copyright notice, this list of conditions and the following % disclaimer. % * Redistributions in binary form must reproduce the above % copyright notice, this list of conditions and the following % disclaimer in the documentation and/or other materials provided % with the distribution. % * All advertising materials mentioning features or use of this % software must display the following acknowledgement: % This product includes software developed by the University of % Potsdam, Germany, the Potsdam Institute for Climate Impact % Research (PIK), and its contributors. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND % CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, % INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE % DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS % BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, % EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED % TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, % DATA, OR PROFITS; OR BUSINESS % % I'm grateful for every suggestion and hint which improves this % programme. Thanks to Gaetan Koers of Vrije Universiteit Brussel % for hints about Windows compatibility and improvement the help-text % parser. Thanks also to Volkmar Glauche of University of Hamburg % (Universitatsklinikum) and Eduard vander Zwan (Wageningen % Universiteit) for usefule hints and comments about the % root-folder of the toolbox and the startup.m entries. % initialization some variables narginchk(0,1) olddir = pwd; toolbox_name = ''; install_file = ''; install_path = ''; deinstall_file = ''; src_dir = ''; install_dirPC = ''; install_dirUNIX = ''; version_file = ''; version_number = ''; release = ''; infostring = ''; old_dirs = ''; ignore = ''; xml_name = ''; xml_start = ''; xml_demo = ''; xml_web = ''; restart = 0; count_warnings = 0; include_pfiles = 0; pc_only = 0; max_warnings = 10; % more warnings than this number will be suppressed - feel free to change this number fid = 0; % read the resource file if nargin == 1 if exist(char(varargin{1}),'dir') == 7 src_dir = varargin{1}; cd(src_dir); disp([' Change to directory ', src_dir,'']) else toolbox_name = varargin{1}; end elseif nargin == 2 if exist(char(varargin{2}),'dir') == 7 src_dir = varargin{2}; cd(src_dir); disp([' Change to directory ', src_dir,'']) end toolbox_name = varargin{1}; end % get version number of the makeinstall-script mi_file = which(mfilename); mi_version = 'none'; fid = fopen(mi_file,'r'); if fid ~= -1 while 1 temp = fgetl(fid); if ~ischar(temp), break elseif ~isempty(temp) if temp(1) == '%' i = findstr(temp,'Version:'); if ~isempty(i), mi_version = temp(i(1)+9:end); break, end i = findstr(temp,'$Revision:'); if ~isempty(i), mi_version = strtok(temp(i(1)+11:end),'$'); break, end end end end fclose(fid); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% splash the BSD License filename = 'makeinstall'; txt = {'';'BSD LICENSE'; '';'Copyright (c) 2008-2023'; 'Norbert Marwan, Potsdam Institute for Climate Impact Research, Germany'; 'https://tocsy.pik-potsdam.de'; ''; 'Copyright (c) 2002-2008'; 'Norbert Marwan, Potsdam University, Germany'; 'http://www.agnld.uni-potsdam.de'; ''; 'All rights reserved.'; ''; 'Redistribution and use in source and binary forms, with or without'; 'modification, are permitted provided that the following conditions'; 'are met:'; ''; ' * Redistributions of source code must retain the above'; ' copyright notice, this list of conditions and the following'; ' disclaimer.'; ' * Redistributions in binary form must reproduce the above'; ' copyright notice, this list of conditions and the following'; ' disclaimer in the documentation and/or other materials provided'; ' with the distribution.'; ' * Neither the name of the copyright holder nor the names of its'; ' contributors may be used to endorse or promote products derived'; ' from this software without specific prior written permission.'; ''; 'THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS'; '“AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED'; 'TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR'; 'PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR'; 'CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,'; 'EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,'; 'PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;'; 'OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,'; 'WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR'; 'OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF'; 'ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.' }; which_res = which([filename,'.m']); bsdrc_path = [strrep(which_res,[filename,'.m'],''), 'private']; bsdrc_file = [bsdrc_path, filesep, '.bsd.',filename]; if ~exist(bsdrc_path,'dir') mkdir(strrep(which_res,[filename,'.m'],''),'private'); end if ~exist(bsdrc_file,'file') | strcmpi(varargin,'bsd') if ~exist(bsdrc_file,'file') disp('First click on the license to accept them.') else disp('Click on the license to close them.') end fid = fopen(bsdrc_file,'w'); fprintf(fid,'%s\n','If you delete this file, the BSD License will'); fprintf(fid,'%s','splash up at the next time the programme starts.'); fclose(fid); h = figure('NumberTitle','off',..., 'ButtonDownFcn','close',... 'Name','BSD License'); ha = get(h,'Position'); h = uicontrol('Style','Listbox',... 'ButtonDownFcn','close',... 'CallBack','close',... 'Position',[0 0 ha(3) ha(4)],... 'Value',1,... 'FontName','Courier',... 'BackgroundColor',[.8 .8 .8],... 'String',txt); waitfor(h) end if isempty(varargin) | ~strcmpi(varargin,'bsd') % create install file if not the 'bsd' is called files = what; if isempty(files.m) warning on; warning('No M-files found in this directory.'); end rc_file = fullfile(pwd,'makeinstall.rc'); time_string = datestr(now); fid = fopen(rc_file,'r'); if fid > 0 % begin main part disp(' Reading the resource file') while 1 l = fgetl(fid); if ~ischar(l), break, end if ~isempty(l), eval(l); end end fclose(fid); if isempty(toolbox_name), [dummy toolbox_name] = fileparts(pwd); end if isempty(install_file), install_file = 'install.m'; end if isempty(deinstall_file), deinstall_file = 'tbclean.m'; end if isempty(src_dir), src_dir = pwd; end if isempty(install_dirPC), install_dirPC = pwd; end if isempty(install_dirUNIX), install_dirUNIX = install_dirPC; end if isempty(version_number), version_number = 'none'; end if isempty(release), release = ' '; end if isempty(include_pfiles), include_pfiles = 0; end if isempty(pc_only), pc_only = 0; end % if isempty(infostring), infostring = ''; end old_dirs = lower(old_dirs); if ~iscell(old_dirs), old_dirs = cellstr(old_dirs); end if ~iscell(ignore), ignore = cellstr(ignore); end check_for_old = '[findstr([lower(toolboxpath),''demo''],lower(p))'; check_for_old = [check_for_old,' findstr(lower(toolboxpath),lower(p))']; for i = 1:length(old_dirs) check_for_old = [check_for_old,' findstr(''',old_dirs{i},''',lower(p))']; end check_for_old = [check_for_old,']']; % make install file disp(' Reading the install source code') if include_pfiles disp(' ** Warning: p-files will be included!') end fid = fopen(mi_file, 'r'); warning off i = 1; flag = 0; while 1 temp = fgetl(fid); if ~ischar(temp), break, end if length(temp) > 1 if strcmpi(temp,'%<-- ASCII begins here: install -->') eofbyte = ftell(fid); flag = 1; elseif strcmpi(temp,'%<-- ASCII begins here: clean -->') eofbyte = ftell(fid)-eofbyte-1000; flag = 2; elseif strcmpi(temp,'%<-- ASCII ends here -->') flag = 0; i = 1; end if findstr(temp(1:2),'%@') == 1 aline = repmat('-',1,length(toolbox_name)+17); switch flag case 1 % read install part temp = strrep(temp,13,''); % remove the CR end of a line (if DOS style) b(i,1) = {temp(3:end)}; b(i) = strrep(b(i),'$lines$',aline); b(i) = strrep(b(i),'$installpath$',install_path); b(i) = strrep(b(i),'$toolboxdirpc$',install_dirPC); b(i) = strrep(b(i),'$toolboxdirunix$',install_dirUNIX); b(i) = strrep(b(i),'$toolboxname$',toolbox_name); b(i) = strrep(b(i),'$generation_date$',time_string); b(i) = strrep(b(i),'$check_for_old$',check_for_old); b(i) = strrep(b(i),'$mi_version$',mi_version); if pc_only b(i) = strrep(b(i),'$pc_only$','if ~ispc, error(''Sorry, this toolbox can be used only on a PC (Windows).''), end'); else b(i) = strrep(b(i),'$pc_only$',''); end if isempty(infostring) b(i) = strrep(b(i),'$infostring$',''); else b(i) = strrep(b(i),'$infostring$',['disp(''',infostring,''')']); end case 2 % read uninstall part temp = strrep(temp,13,''); % remove the CR end of a line (if DOS style) c(i,1) = {temp(3:end)}; c(i) = strrep(c(i),'$lines$',aline); c(i) = strrep(c(i),'$toolboxdir$',install_dirPC); c(i) = strrep(c(i),'$toolboxname$',toolbox_name); c(i) = strrep(c(i),'$deinstall_file$',strtok(deinstall_file,'.')); c(i) = strrep(c(i),'$deinstall_file_up$',strtok(upper(deinstall_file),'.')); c(i) = strrep(c(i),'$generation_date$',time_string); end i = i+1; end end end fclose(fid); if exist(fullfile(olddir,'install.m'),'file'), delete(fullfile(olddir,'install.m')); end fid = fopen(fullfile(olddir,install_file),'w'); startbyte = eofbyte; for i2 = 1:length(b), b(i2) = strrep(b(i2),'$startbyte$',num2str(startbyte-1000)); fprintf(fid,'%s\n',char(b(i2))); end fclose(fid); disp([' Source directory ', src_dir,'']) if ~exist(src_dir,'dir'), error('Predefined source directory is nonexistent. Check the resource file.'), end cd(src_dir) % make clean file % if ~exist(deinstall_file) disp([' Create ', deinstall_file,'']) fid = fopen(deinstall_file,'w'); for i2 = 1:length(c), fprintf(fid,'%s\n',char(c(i2))); end fclose(fid); % end % get version number % - test if GIT (use latest tag) if strcmpi(version_file,'git') if exist('.git/refs/tags','dir') ~= 7 disp(' ** Warning: No GIT repository found!') count_warnings = count_warnings + 1; version_number = 'none'; else d_tags = dir('.git/refs/tags'); % remove '.' and '..' i_remtags = cellfun(@(x)strcmp(x, '.'), {d_tags.name},'UniformOutput',false); d_tags(find(cell2mat(i_remtags))) = []; i_remtags = cellfun(@(x)strcmp(x, '..'), {d_tags.name},'UniformOutput',false); d_tags(find(cell2mat(i_remtags))) = []; % find max in datenum field (= youngest tag) [dummy i_tag] = max([d_tags.datenum]); if isempty(i_tag) disp(' ** Warning: No GIT tag found!') count_warnings = count_warnings + 1; version_number = 'none'; else version_number = d_tags(i_tag).name; disp([' Found GIT tag (used as version number) ']) end end else % version number from CVS/SVN tag in specified file fid = fopen(version_file,'r'); if fid ~= -1 while 1 temp = fgetl(fid); if ~ischar(temp), break elseif ~isempty(temp) if temp(1) == '%' i = findstr(temp,'Version:'); if ~isempty(i), version_number = temp(i(1)+9:end); break, end i = findstr(temp,'$Revision:'); if ~isempty(i), version_number = strtok(temp(i(1)+11:end),'$'); break, end end end end fclose(fid); end end if strcmpi(version_number,'none') if max_warnings && count_warnings == max_warnings disp(' ** TOO MUCH WARNINGS!') disp(' I give up! Following warning messages will be suppressed.') end if count_warnings < max_warnings disp(' ** Warning: No version number found!') disp(' Please provide a version file or number in the makeinstall.rc file.') end count_warnings = count_warnings + 1; else disp([' Found version number ', version_number,'']) end if ~strcmpi(release,' ') && ~isempty(release) disp([' Found release ', release,'']) end if ~isempty(infostring) if length(infostring)>40, txt = [infostring(1:37),'...']; else txt = infostring; end disp([' Found infotext ''', txt,'''']) end disp([' Time stamp ', time_string,'']) % make launch pad file if ~exist(fullfile(src_dir,'info.xml'),'file') && ~isempty(xml_name) disp(' Create info.xml') files.m(strcmpi(files.m,'info.xml')) = []; files.m(strcmpi(files.m,install_file)) = []; v = version; mrelease = str2double(v(findstr(v,'(R')+2:findstr(v,')')-1)); if mrelease>12, area = 'toolbox'; icon_path = '$toolbox/matlab/icons'; else area = 'matlab'; icon_path = '$toolbox/matlab/general'; end fid = fopen('info.xml','w'); fprintf(fid,'%s\n',''); fprintf(fid,'%s\n\n',''); fprintf(fid,'%s\n',['',num2str(mrelease),'']); fprintf(fid,'%s\n',['',xml_name,'']); fprintf(fid,'%s\n',['',area,'']); fprintf(fid,'%s\n\n',['',icon_path,'/matlabicon.gif']); fprintf(fid,'%s\n\n',''); if ~isempty(xml_start) fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',['']); fprintf(fid,'%s\n',['',xml_start,'']); fprintf(fid,'%s\n',['',icon_path,'/figureicon.gif']); fprintf(fid,'%s\n\n',''); end fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',''); if isunix fprintf(fid,'%s\n',['helpwin ',install_dirUNIX,'/']); else fprintf(fid,'%s\n',['helpwin ',install_dirPC,'/']); end fprintf(fid,'%s\n',['',icon_path,'/bookicon.gif']); fprintf(fid,'%s\n\n',''); if ~isempty(xml_demo) fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',['',xml_demo,'']); fprintf(fid,'%s\n',['',icon_path,'/demoicon.gif']); fprintf(fid,'%s\n\n',''); end if ~isempty(xml_web) fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',''); fprintf(fid,'%s\n',['web ',xml_web,' -browser;']); fprintf(fid,'%s\n',['',icon_path,'/webicon.gif']); fprintf(fid,'%s\n\n',''); end fprintf(fid,'%s\n\n',''); fprintf(fid,'%s',''); fclose(fid); end % make contents file if ~exist(fullfile(src_dir,'Contents.m'),'file') disp(' Create Contents.m') files.m(strcmpi(files.m,'Contents.m')) = []; files.m(strcmpi(files.m,install_file)) = []; fid = fopen('Contents.m','w'); fprintf(fid,'%s\n',['% ',toolbox_name]); fprintf(fid,'%s\n',['% Version ',strrep(num2str(version_number),'v',''),' ',date]); fprintf(fid,'%s\n','%'); for i = 1:length(files.m) helptext = help(char(files.m{i})); ind = findstr(char(10),helptext); if isempty(ind) if max_warnings && count_warnings == max_warnings disp(' ** TOO MUCH WARNINGS!') disp(' I give up! Following warning messages will be suppressed.') end if count_warnings < max_warnings disp([' ** Warning: ',char(files.m{i}),' does not contain any helptext. It is highly',char(10),' recommended to include a helptext in every M-file.']) end count_warnings = count_warnings + 1; else helpline = deblank(helptext(1:ind(1))); [fnname,helpstring] = strtok(helpline(2:length(helpline))); fnname = fliplr(deblank(fliplr(fnname))); if ~strcmpi(fnname,strtok(char(files.m{i}),'.')) if max_warnings && count_warnings == max_warnings disp(' ** TOO MUCH WARNINGS!') disp(' I give up! Following warning messages will be suppressed.') end if count_warnings < max_warnings disp([' ** Warning: ',char(files.m{i}),' does not have a valid helptext. Please refer ',char(10),' the Matlab manual for the correct structure of M-files.']) end count_warnings = count_warnings + 1; fnname = lower(strtok(char(files.m{i}),'.')); end line = [lower(fnname),blanks(size(char(files.m),2)-length(fnname)-1),'- ',helpstring]; fprintf(fid,'%s\n',['% ', line]); end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % this part was suggested by Gaetan Koers (Vrije Universiteit Brussel) for i = 1:numel(files.classes) line = [files.classes{i}, ' methods:']; fprintf(fid,'%%\n%s\n%%\n',['% ', line]); gk_list = dir(['@', files.classes{i}]); for j = 1:numel(gk_list) gk_fname = gk_list(j).name; if ~gk_list(j).isdir %~strcmp(gk_fname, '.') && ~strcmp(gk_fname, '..') helptext = help(fullfile(files.classes{i},gk_fname)); ind = findstr(char(10),helptext); if isempty(ind) if max_warnings && count_warnings == max_warnings disp(' ** TOO MUCH WARNINGS!') disp(' I give up! Following warning messages will be suppressed.') end if count_warnings < max_warnings disp([' ** Warning: ', files.classes{i}, ' method ', char(gk_fname),' does not contain any helptext. It is highly',char(10),' recommended to include a helptext in every M-file.']) end count_warnings = count_warnings + 1; else helpline = deblank(helptext(1:ind(1))); [fnname,helpstring] = strtok(helpline(2:length(helpline))); fnname = fliplr(deblank(fliplr(fnname))); if ~strcmpi(fnname,strtok(char(gk_fname),'.')) if max_warnings && count_warnings == max_warnings disp(' ** TOO MUCH WARNINGS!') disp(' I give up! Following warning messages will be suppressed.') end if count_warnings < max_warnings disp([' ** Warning: ', files.classes{i}, ' method ',char(gk_fname),' does not have a valid helptext. Please refer ',char(10),' the Matlab manual for the correct structure of M-files.']) end count_warnings = count_warnings + 1; fnname = lower(strtok(char(gk_fname),'.')); end line = [lower(fnname),blanks(size(char(files.m),2)-length(fnname)-1),'- ',helpstring]; fprintf(fid,'%s\n',['% ', line]); end end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fprintf(fid,'\n%s\n\n',['% Generated at ',time_string,' by MAKEINSTALL']); fclose(fid); else % modify contents file disp(' Modify Contents.m') fid = fopen('Contents.m','r'); contents = ''; while 1 temp = fgetl(fid); if ~ischar(temp), break, end contents = [contents;{temp}]; end fclose(fid); if length(contents) > 1 && isempty(findstr(lower(contents{2}),'version')) contents(3:end+1) = contents(2:end); end if ~strcmp(release,' ') && ~isempty(release), release = [' (',release,') ']; end contents{2} = ['% Version ',strrep(version_number, 'v', ''),release,date]; if (isempty(contents{end}) | findstr(contents{end},'Modified at')>0); l = length(contents); else l = length(contents)+1; end contents{l} = ['% Modified at ',time_string,' by MAKEINSTALL']; fid = fopen('Contents.m','w'); for i = 1:length(contents) fprintf(fid,'%s\n',contents{i}); end fclose(fid); end % find sub-directories dirnames = ''; filenames = ''; temp = '.:'; while ~isempty(temp) [temp1 temp] = strtok(temp,':'); if ~isempty(temp1) dirnames = [dirnames; {temp1}]; temp2 = strrep(temp1,'./',''); if isempty(findstr(lower(fliplr(temp2(end-min([3,length(temp2)])+1:end))), 'svc')) x2 = dir(temp1); for i = 1:length(x2) if ~x2(i).isdir, filenames = [filenames; {[temp1,'/', x2(i).name]}]; end if x2(i).isdir && ~strcmp(x2(i).name,'.') && ~strcmp(x2(i).name,'..'), temp = [temp,temp1,filesep,x2(i).name,':']; end end end end end dirnames = strrep(dirnames,filesep,'/'); dirnames = strrep(dirnames,'./',''); filenames = strrep(filenames,filesep,'/'); filenames = strrep(filenames,'./',''); % ignore CVS, svn and git folders remove = []; for i = 1:length(dirnames) if length(dirnames{i}) > 4 test_string = fliplr(dirnames{i}); if strcmpi(test_string(1:min([3,length(test_string)])),fliplr('CVS')), remove = [remove; i]; end if strcmpi(test_string(1:min([4,length(test_string)])),fliplr('.git')), remove = [remove; i]; end if strcmpi(test_string(1:min([4,length(test_string)])),fliplr('.svn')), remove = [remove; i]; end if strcmpi(dirnames{i}(1:min([3,length(dirnames)])),'CVS'), remove = [remove; i]; end if strcmpi(dirnames{i}(1:min([4,length(dirnames)])),'.git'), remove = [remove; i]; end if strcmpi(dirnames{i}(1:min([4,length(dirnames)])),'.svn'), remove = [remove; i]; end end end dirnames(remove) = []; % ignore files specified by variable 'ignore' in makeinstall.rc and % additionally ignore makeinstall.rc, makeinstall.m, .cvsignore, and similar files i = 1; ignore = [ignore, {'makeinstall.m'}, {'makeinstall.rc'}, {'.cvsignore'}, {'.git'}, {'.svn'}, {'.project'}, {'.texlipse'}, {'.sync'}, {'.DS_Store'}, {'.gitignore'}]; while i <= length(filenames) if i < 1, i = 1; end [~, curr_file, ext] = fileparts(filenames(i)); if ~include_pfiles if strcmpi(ext, '.p'), filenames(i) = []; i = i-1; end, end for j = 1:length(ignore) if(strcmp('.gitignore', ignore{j})) end if ~isempty(findstr(ignore{j},filenames{i})) if i>=1 filenames(i) = []; i = i-1; if i < 1, i = 1; end end continue end end i = i+1; end % read the toolbox files i = 0; while i <= length(filenames), i = i+1; if i>length(filenames), break, end if strcmp(filenames{i},'.') | strcmp(filenames{i},'..') | strcmpi(filenames{i},install_file) | strcmpi(filenames{i},'install.m') | strncmpi(filenames{i},'private/.bsd',12) filenames(i) = []; i = i-1; end end b = []; c = []; bfile = ''; for i = 1:length(filenames) [~, curr_file, ext] = fileparts(filenames(i)); disp([' Reading ', char(filenames{i}),'']) fid = fopen(char(filenames{i}),'r'); % ASCII data if ... strcmpi(ext,'.txt') || ... strcmpi(ext,'.csv') || ... strcmpi(ext,'.dat') || ... strcmpi(ext,'.tex') || ... strcmpi(ext,'.m') || ... strcmpi(ext,'.mdl') || ... strcmpi(ext,'.md') || ... strcmpi(ext,'.rc') || ... strcmpi(ext,'.xml') || ... strcmpi(ext,'.css') || ... strcmpi(ext,'.log') || ... strcmpi(ext,'.js') || ... strcmpi(ext,'.html') || ... strcmpi(ext,'.htm') c = [c, ['%<-- ASCII begins here: __',char(filenames{i}),'__ -->'], 10]; in = char(fread(fid)'); in = strrep(in,[char(10),char(13)],char(10)); in = strrep(in,[char(13),char(10)],char(10)); in = strrep(in,char(10),[char(10),'%@']); in = strrep(in,char(13),[char(10),'%@']); % while 1 % temp = fgetl(fid); % if ~ischar(temp), break % else c = [c, ['%@',in],10]; % end % end c = [c, '%<-- ASCII ends here -->', 10]; % binary data else clear temp bfile = [bfile; filenames(i)]; temp_in = fread(fid); if ~isempty(temp_in) temp(2,:) = temp_in'; end temp(1,:) = '%'; temp = temp(:); btemp = temp'; b = [b, ['%<-- Binary begins here: __',char(filenames(i)),'__ __',num2str(length(btemp)),'__ -->',10]]; b = [b, btemp, 10]; b = [b, ['%<-- Binary ends here -->',10]]; end fclose(fid); end % compute a checksum c = double([c, b]); checksum = dec2hex(sum((1:length(c)).*c)); disp([' Checksum is ', checksum,'']) % write the archiv into the install file disp([' Writing ', install_file,'']) fid = fopen(fullfile(olddir,install_file),'a'); fprintf(fid,'%s\n','% -------------------------------------------'); fprintf(fid,'%s\n','% GENERATED ENTRIES - DO NOT MODIFY ANYTHING!'); fprintf(fid,'%s\n','%<-- Header begins here -->'); fprintf(fid,'%s\n',['%@',checksum]); fprintf(fid,'%s\n',['%@',time_string]); fprintf(fid,'%s\n',['%@',version_number, release]); fprintf(fid,'%s\n','%<-- Header ends here -->'); fwrite(fid,c); fclose(fid); cd(olddir) else % make makeinstall.rc file if isempty(toolbox_name), [dummy toolbox_name] = fileparts(pwd); end fid = fopen(rc_file,'w'); if fid ~= -1 warning on disp(' ** Warning: Could not find the makeinstall resource file.') disp(' Creating now the makeinstall resource file.') disp(' Please modify the entries in ') disp([' ',rc_file]) disp(' and restart if you would like to use other than the default') disp(' settings. Now automatically restart with default settings.') fprintf(fid,'%s\n\n','% modify the following lines for your purpose'); fprintf(fid,'%s\n\n',['toolbox_name=''',toolbox_name,'''; % name of the toolbox']); fprintf(fid,'%s\n','install_file=''install.m''; % name of the install script'); fprintf(fid,'%s\n','deinstall_file=''tbclean.m''; % name of the deinstall script'); fprintf(fid,'%s\n','old_dirs=''''; % possible old (obsolete) toolbox folders'); fprintf(fid,'%s\n','ignore=''''; % files and folders to be ignored'); fprintf(fid,'%s\n','install_path=''''; % the root folder where the toolbox folder will be located (default is $USER$/matlab or $MATLABROOT$/toolbox, or $USERS$/octave when installing for Octave)'); fprintf(fid,'%s\n',['install_dirUNIX=''',toolbox_name,'''; % the folder where the toolbox files will be extracted (UNIX)']); fprintf(fid,'%s\n','install_dirPC=install_dirUNIX; % the folder where the toolbox files will be extracted (PC)'); fprintf(fid,'%s\n',['src_dir=''',pwd,'''; % folder with the origin toolbox (optional, can be empty)']); fprintf(fid,'%s\n\n','pc_only=0; % switch to 1 only if the toolbox is not working under Linux or Mac'); fprintf(fid,'%s\n\n','include_pfiles=0; % switch to ignore (=0) or include (=1) Matlab p-files'); fprintf(fid,'%s\n','version_file=''''; % there are two options: (1) include in the specified file a line like this (e.g. CVS or SVN like): % $Revision$; or (2) just write "git" here and the makeinstall will automatically use the latest GIT tag for the version number'); fprintf(fid,'%s\n','version_number=''''; % or put the version number in this variable'); fprintf(fid,'%s\n','release=''''; % the release number'); fprintf(fid,'%s\n\n','infostring=''''; % further information displayed during installation'); fprintf(fid,'%s\n','% if the info.xml does not yet exist it will be created with the following'); fprintf(fid,'%s\n','% parameters; else these parameters have no effect'); fprintf(fid,'%s\n',['xml_name=''',toolbox_name,'''; % name of the toolbox for the launch pad entry']); fprintf(fid,'%s\n','xml_start=''''; % start programme for the launch pad entry'); fprintf(fid,'%s\n','xml_demo=''''; % demo programme for the launch pad entry'); fprintf(fid,'%s\n','xml_web=''''; % link to the toolbox web site in the launch pad entry'); fclose(fid); restart = 1; else disp('Sorry. A problem during file system access occurred.') error('Could not open the makeinstall resource file.') end cd(olddir) end % end main part end % end check 'bsd' warning on if restart, makeinstall(varargin{:}), end % -------------------------------- % GENERATED ENTRIES - DO NOT EDIT! %<-- ASCII begins here: install --> %@function install(varargin) %@% INSTALL Install script for $toolboxname$. %@% INSTALL creates the $toolboxname$ folder and (optionally) %@% the needed entries in the startup.m file. %@% %@% INSTALL PATH creates the $toolboxname$ folder %@% in the specified PATH. %@% %@% This installation script was generated by using %@% the MAKEINSTALL tool. For further information %@% visit http://matlab.pucicu.de %@ %@% Copyright (c) 2008-2018 %@% Norbert Marwan, Potsdam Institute for Climate Impact Research, Germany %@% http://www.pik-potsdam.de %@% %@% Copyright (c) 2001-2008 %@% Norbert Marwan, Potsdam University, Germany %@% http://www.agnld.uni-potsdam.de %@% %@% THIS IS A GENERATED INSTALL-FILE, DO NOT EDIT! %@% Generation date: $generation_date$ %@% $Date$ %@% $Revision$ %@ %@install_file='';install_path='$installpath$';installfile_info.date='';installfile_info.bytes=[]; %@time_stamp='';checksum='';checksum_file=''; instpaths = ''; %@errcode=0; %@ %@ $pc_only$ %@ %@try %@ warning('off') %@ if isoctave %@ disp([' You are trying to install the toolbox in Octave.',10,' Some compatibility issues might appear.']) %@ warning('off','Octave:possible-matlab-short-circuit-operator') %@ more off %@ end %@ if nargin %@ install_path = varargin{1}; %@ end %@ %@ if exist('install.log','file') == 2, delete('install.log'), end %@ %rehash %@ disp('$lines$') %@ disp(' INSTALLATION $toolboxname$'); %@ disp('$lines$') %@ install_file=[mfilename,'.m']; %@ currentpath=pwd; time_stamp='time_stamp not yet obtained'; checksum='checksum not yet obtained'; %@ fid = 0; %@ %@%%%%%%% read the archive %@%%%%%%% and look for checksum and date in archive %@ errcode=90; %@ disp(' Reading the archiv ') %@ fid=fopen(install_file,'r'); %@ fseek(fid,0,'eof'); eofbyte=ftell(fid); %@ fseek(fid,$startbyte$,'bof'); % location where the container starts %@ while 1 %@ temp=fgetl(fid); %@ startbyte=ftell(fid); %@ if length(temp)>1 %@ if strcmpi(temp,'%<-- Header begins here -->') %@ errcode=90.1; %@ checksum=fgetl(fid); %@ temp1=fgetl(fid); %@ temp2=fgetl(fid); %@ end %@ if strcmpi(temp,'%<-- Header ends here -->') %@ startbyte=ftell(fid); %@ break %@ end %@ end %@ end %@ checksum(1:2)=[]; %@ fseek(fid,startbyte,'bof'); %@ errcode=90.2; %@ A=fread(fid,eofbyte); %@ errcode=90.3; %@ checksum_file=dec2hex(sum((1:length(A))'.*A)); %@ if ~strcmpi(checksum_file,checksum) %@ error(['The installation file is corrupt!',10,'Ensure that the archive container was ',... %@ 'not modified (check FTP/ ',10,'proxy/ firewall settings, anti-virus scanner for emails etc.)!']) %@ else %@ disp([' Checksum test passed (', checksum,')']) %@ end %@ fclose(fid); %@ %@ disp([' $toolboxname$ version ', temp2(3:end),'']) %@ time_stamp=temp1(3:end); disp([' $toolboxname$ time stamp ', time_stamp,'']); %@ %@ errcode=91; %@ if isunix %@ toolboxpath='$toolboxdirunix$'; %@ else %@ toolboxpath='$toolboxdirpc$'; %@ end %@ %@ %@%%%%%%% check for older versions %@ %@ p=path; i1=0; %@ rem_old = ''; %@ %@ while any($check_for_old$>i1) && ~strcmpi('N',rem_old) %@ errcode=92; %@ i1=$check_for_old$; %@ if ~isempty(i1) %@ i1=i1(1); %@ if isunix, i2=findstr(':',p); else i2=findstr(';',p); end %@ i3=i2(i2>i1); % last index pathname %@ if ~isempty(i3), i3=i3(1)-1; else i3=length(p); end %@ i4=i2(i2 Delete old toolbox? Y/N [Y]: ','s'); %@ end %@ if isempty(rem_old), rem_old = 'Y'; end %@ if strcmpi('Y',rem_old) %@%%%%%%% removing old entries in startup-file %@ errcode=94; %@ rmpath(oldtoolboxpath) %@ err = savepath; %@ if err, disp(' ** Warning: No write access to pathdef.m file!'), end %@ if i4>1, p(i4-1:i3)=''; else p(i4:i3)=''; end %@ startup_exist = exist('startup','file'); %@ if isoctave startup_exist = exist(fullfile('~','.octaverc'),'file'); end %@ if startup_exist %@ startupfile=which('startup'); %@ startuppath=startupfile(1:findstr('startup.m',startupfile)-1); %@ if isoctave %@ startuppath = ['~',filesep]; %@ startupfile = fullfile('~','.octaverc'); %@ end %@ errcode=94.1; %@ if ~isunix %@ if isoctave %@ toolboxroot=fullfile(matlabroot); %@ else %@ toolboxroot=fullfile(matlabroot,'toolbox'); %@ end %@ curr_pwd = pwd; home_pwd = matlabroot; %@ else %@ toolboxroot=startuppath; %@ curr_pwd = pwd; cd ('~'); home_pwd = pwd; cd(curr_pwd); %@ end %@ fid = fopen(startupfile,'r'); %@ k = 1; %@ while 1 %@ tmp = fgetl(fid); %@ if ~ischar(tmp), break, end %@ instpaths{k} = tmp; %@ k = k + 1; %@ end %@ fclose(fid); %@ k=1; %@ while k <= length(instpaths) %@ if findstr(oldtoolboxpath,strrep(instpaths{k},'~',home_pwd)) %@ errcode=94.2; %@ instpaths(k)=[]; %@ else %@ k=k+1; %@ end %@ end %@ fid=fopen(startupfile,'w'); %@ errcode=94.3; %@ if fid < 0 %@ disp([' ** Warning: Could not get access to ',startupfile,'.']); %@ disp(' ** Could not remove toolbox from the startup.m file.'); %@ disp(' ** Ensure that you have write access!'); %@ else %@ for i2=1:length(instpaths), %@ fprintf(fid,'%s\n', char(instpaths{i2})); %@ end %@ fclose(fid); %@ end %@ end %@%%%%%%% removing old paths %@ errcode=93; %@ if exist(oldtoolboxpath,'dir') == 7 %@ disp([' Change to ',oldtoolboxpath,'']) %@ cd(oldtoolboxpath) %@ dirnames='';filenames=''; %@ temp='.:'; %@ errcode=93.1; %@ while ~isempty(temp) %@ [temp1 temp]=strtok(temp,':'); %@ if ~isempty(temp1) %@ dirnames=[dirnames; {temp1}]; %@ x2=dir(temp1); %@ for i=1:length(x2) %@ if ~x2(i).isdir, filenames=[filenames; {[temp1,'/', x2(i).name]}]; end %@ if x2(i).isdir && ~strcmp(x2(i).name,'.') && ~strcmp(x2(i).name,'..'), temp=[temp,temp1,filesep,x2(i).name,':']; end %@ end %@ end %@ end %@ errcode=93.2; %@ if isoctave, confirm_recursive_rmdir (false, 'local'); end %@ dirnames=strrep(dirnames,['.',filesep],''); %@ for i=1:length(dirnames),l(i)=length(dirnames{i}); end %@ [i i4]=sort(l); %@ dirnames=dirnames(fliplr(i4)); %@ errcode=93.3; %@ for i=1:length(dirnames) %@ if dirnames{i} == '.', continue, end %@ delete([dirnames{i}, filesep,'*']), %@ if exist('rmdir') == 5 && exist(dirnames{i}) == 7, rmdir(dirnames{i},'s'); else, delete(dirnames{i}), end %@ disp([' Removing files in ',char(dirnames{i}),'']) %@ end %@ errcode=93.4; %@ cd(currentpath) %@ if exist('rmdir') == 5 && exist(oldtoolboxpath) == 7, rmdir(oldtoolboxpath,'s'); else, delete(oldtoolboxpath), end %@ errcode=93.5; %@ disp([' Removing ',oldtoolboxpath,'']) %@ end %@%%%%%%% %@ end %@ end %@ p = path; i1 = 0; %@ end %@ clear p i i1 i2 i3 i4 temp* x2 %@ %@%%%%%%% add entry into startpath in startup.m %@ i=findstr(toolboxpath,path); %@ startupPos = 0; %@ startup_exist = exist('startup','file'); %@ if isoctave startup_exist = exist(fullfile('~','.octaverc'),'file'); end %@ if startup_exist %@ errcode=95.1; %@ startupfile=which('startup'); %@ startuppath=startupfile(1:findstr('startup.m',startupfile)-1); %@ if isoctave %@ startuppath = ['~',filesep]; %@ startupfile = fullfile('~','.octaverc'); %@ end %@ %@ if ~isunix %@ errcode=95.11; %@ %toolboxroot=fullfile(matlabroot,'toolbox'); %@ if isoctave %@ toolboxroot=matlabroot; %@ else %@ toolboxroot=strtok(userpath,';'); %@ end %@ else %@ errcode=95.12; %@ toolboxroot=startuppath; %@ end %@ fid = fopen(startupfile,'r'); %@ k = 1; %@ while 1 %@ tmp = fgetl(fid); %@ if ~ischar(tmp), break, end %@ instpaths{k} = tmp; %@ k = k + 1; %@ end %@ fclose(fid); %@ end %@ if isempty(i) %@ errcode=95; %@ startupfilestr = 'startup.m'; %@ if isoctave startupfilestr = fullfile('~','.octaverc'); toolboxroot = pkg('prefix'); end %@ %@ %% check whether the default toolbox path exists %@ err = 1; %@ if ~isunix %@ errcode=95.01; %@ if isoctave %@ toolboxroot=matlabroot; %@ else %@ if isempty(userpath), userpath('reset'), end %@ toolboxroot=strtok(userpath,';'); %@ end %@ if exist(toolboxroot,'file') ~= 7, err=mkdir(toolboxroot); end %@ cd(toolboxroot) %@ startupfile=fullfile(toolboxroot,'startup.m'); %@ if isoctave, startupfile=fullfile('~','.octaverc');end %@ instpaths={''}; %@ else %@ errcode=95.02; %@ cd ~ %@ startuppath=[pwd,filesep]; %@ if isoctave %@ status = fileattrib(pkg('prefix')); %@ result = stat(pkg('prefix')); %@ uid = geteuid; %@ if status && result.uid ~= uid %@ disp([' ** No writeable package folder found. Will define it as ~/octave.',10,' If installation fails, you have to create it manually, set it by',10,' calling ''pkg prefix ~/octave'' and re-run the installation!']) %@ err=mkdir('~/octave'); %@ pkg prefix ~/octave; %@ toolboxroot = pkg('prefix'); %@ end %@ %@ if exist(pkg('prefix'),'file') ~= 7, err=mkdir(pkg('prefix')); end %@ cd(pkg('prefix')) %@ startupfile=fullfile(startuppath,'.octaverc'); %@ else %@ if isempty(userpath), userpath('reset'), end %@ if isempty(userpath) % i.e. userpath reset failed %@ if ~exist('matlab','dir'), mkdir('matlab'), end % we should be in the home folder %@ userpath([pwd,'/matlab']) %@ end %@ up = textscan(userpath,'%s','delimiter',':'); up=up{1}; %@ startuppath = ''; %@ for k = 1:length(up) %@ if exist(up{k},'file') == 7 %@ startuppath = up{k}; %@ end %@ end %@ if isempty(startuppath) %@ err=mkdir(up{1}); %@ startuppath = up{1}; %@ end %@ cd(startuppath) %@ startupfile=fullfile(startuppath,'startup.m'); %@ end %@ end %@ if ~err, error('Could not create toolbox path. Please check whether you have write access or whether there is another file of such a name blocking the creation of the path.'), end %@ %@ if exist(startupfilestr,'file') %@ errcode=95.1; %@ else %@ errcode=95.2; %@ if ~isunix %@ errcode=95.21; %@ if isoctave %@ toolboxroot=matlabroot; %@ startupfile=fullfile('~','.octaverc'); %@ else %@ toolboxroot=strtok(userpath,';'); %@ startupfile=fullfile(toolboxroot,'startup.m'); %@ end %@ cd(toolboxroot) %@ instpaths={''}; %@ else %@ errcode=95.22; %@ cd ~ %@ startuppath=[pwd,filesep]; %@ if isoctave %@ cd(pkg('prefix')) %@ startupfile=fullfile(startuppath,'.octaverc'); %@ else %@ up = textscan(userpath,'%s','delimiter',':'); up=up{1}; %@ startuppath = ''; %@ for k = 1:length(up) %@ if exist(up{k},'file') == 7 %@ startuppath = up{k}; %@ end %@ end %@ if isempty(startuppath) %@ err=mkdir(up{1}); %@ startuppath = up{1}; %@ end %@ cd(startuppath) %@ startupfile=fullfile(startuppath,'startup.m'); %@ end %@ %@ toolboxroot=startuppath; %@ instpaths={''}; %@ end %@ end %@ %@ errcode=95.23; %@ if ~isempty(install_path) %@ switch ( exist(install_path,'dir') ) %@ case 0 %@ in = input(['> Create ', install_path, '? Y/N [Y]: '],'s'); %@ if isempty(in), in = 'Y'; end %@ if strcmpi('Y',in) %@ err = mkdir(install_path); %@ if ~err %@ disp([' ** Could not create ', install_path, '! Using ',startuppath,' as installation path.']) %@ else %@ toolboxroot = install_path; %@ end %@ else %@ disp([' ** Do not create ', install_path, '! Using ',startuppath,' as installation path.']) %@ end %@ case 2 %@ disp([' ** ', install_path, ' is not a directory! Using ',startuppath,' as installation path.']) %@ case 7 %@ toolboxroot = install_path; %@ end %@ end %@ %@ errcode=95.3; %@ TBfullpath=fullfile(toolboxroot,toolboxpath); %@ if ~exist(TBfullpath,'dir'), mkdir(toolboxroot,toolboxpath); end %@ %@%%%%%%% resolve relative path (starting with ./ and ../) to absolute path %@ %@ isrelpath = findstr('./',TBfullpath); %@ isrelpathDos = findstr('.\',TBfullpath); %@ if ( ~isempty(isrelpath) && isrelpath == 1 ) || ( ~isempty(isrelpathDos) && isrelpathDos == 1 ) %@ TBfullpath = fullfile(pwd, TBfullpath(3:end)); %@ end %@ %@ isrelpath = findstr('../',TBfullpath); %@ isrelpathDos = findstr('..\',TBfullpath); %@ if ( ~isempty(isrelpath) && isrelpath == 1 ) || ( ~isempty(isrelpathDos) && isrelpathDos == 1 ) %@ TBfullpath = fullfile(pwd, TBfullpath(4:end)); %@ end %@ %@ %@%%%%%%% ask where to add entry in startup file %@ %@ disp(['> In order to get permanent access, the toolbox should be added',10,'> to the top (default) or end (E) of your startup path.']) %@ in = input('> Add toolbox permanently into your startup path (highly recommended)? Y/E/N [Y]: ','s'); %@ if isempty(in), in = 'Y'; end %@ if strcmpi('Y',in) %@ startupPos = '-begin'; %@ disp(' Adding Toolbox at the top of the startup.m file') %@ elseif strcmpi('E',in) %@ startupPos = '-end'; %@ disp(' Adding Toolbox at the end of the startup.m file') %@ end %@ %@ if startupPos %@ errcode=95.4; %@ loc = ['addpath ''',TBfullpath,''' ', startupPos]; %@ if ~ismember(loc, instpaths) %@ instpaths{end+1} = loc; %@ end %@ end %@ %@ else %@ errcode=96; %@ startupfile=which('startup'); %@ startuppath=startupfile(1:findstr('startup.m',startupfile)-1); %@ if isoctave %@ startuppath = ['~', filesep]; %@ startupfile = fullfile('~','.octaverc'); %@ end %@ if ~isunix %@ if isoctave %@ toolboxroot=matlabroot; %@ else %@ toolboxroot=strtok(userpath,';'); %@ end %@ %toolboxroot=fullfile(matlabroot,'toolbox'); %@ else %@ toolboxroot=startuppath; %@ end %@ %@ errcode=96.21; %@ if ~isempty(install_path) %@ switch ( exist(install_path,'dir') ) %@ case 0 %@ disp(['> Create ', install_path, '?']) %@ in = input('> Create ', install_path, '? Y/N [Y]: ','s'); %@ if isempty(in), in = 'Y'; end %@ if strcmpi('Y',in) %@ err = mkdir(install_path); %@ if ~err %@ disp([' ** Could not create ', install_path, '! Using ',startuppath,' as installation path.']) %@ else %@ toolboxroot = install_path; %@ end %@ else %@ disp([' ** Do not create ', install_path, '! Using ',startuppath,' as installation path.']) %@ end %@ case 2 %@ disp([' ** ', install_path, ' is not a directory! Using ',startuppath,' as installation path.']) %@ case 7 %@ toolboxroot = install_path; %@ end %@ end %@ TBfullpath=fullfile(toolboxroot,toolboxpath); %@ if ~exist(TBfullpath,'dir'), mkdir(toolboxroot,toolboxpath); end %@ end %@ %@ %@%%%%%%% read the archive %@ errcode=97; %@ fprintf(' Importing the archiv ') %@ cd(currentpath) %@ max_sc=30; %@ scale=[sprintf('%3.0f',0),'% |',repmat(' ',1,max_sc),'|']; %@ fprintf('%s',scale) %@ b=''; c.file=''; c.data=''; bfile=''; folder=''; i2=0; %@ %@ % read ASCII %@ errcode=97.1; %@ i1=findstr(char(A'),'%<-- ASCII begins here'); %@ i2=findstr(char(A'),'%<-- ASCII ends here -->'); %@ %@ for k=1:length(i1), %@ wb=round(i1(k)*max_sc/eofbyte); %@ errcode=97.11; %@ scale=[sprintf('%3.0f',100*wb/max_sc),'% |',repmat('*',1,wb),repmat(' ',1,max_sc-wb),'|']; %@ fprintf([repmat('\b',1,max_sc+7),'%s'],scale) %@ B=A(i1(k):i2(k)-2); %@ %@ i4=find(B == 10); %@ i3=[0;i4(1:end-1)]+1; %@ filename=strrep(... %@ strrep(char(B(i3(1):i4(1)-1)'),'%<-- ASCII begins here: __',''),... %@ '__ -->',''); %@ errcode=['97.1',reshape(dec2hex(double(filename))',1,length(filename)*2)]; %@ filename = strrep(filename, '/', filesep); %@ i6=findstr(filename, filesep); %@ if i6>0 %@ folder=[folder; {filename(1:i6(end)-1)}]; %@ end %@ c(k).file={filename}; %@ c(k).data=strrep(char(B(i4(1)+3:end)'),[char(10),'%@'],char(10)); %@ end %@ %@ % read binary %@ errcode=97.2; %@ i1=findstr(char(A'),'%<-- Binary begins here'); %@ i2=findstr(char(A'),'%<-- Binary ends here -->'); %@ for k=1:length(i1), %@ wb=round(i1(k)*max_sc/eofbyte); %@ errcode=97.21; %@ scale=[sprintf('%3.0f',100*wb/max_sc),'% |',repmat('*',1,wb),repmat(' ',1,max_sc-wb),'|']; %@ fprintf([repmat('\b',1,max_sc+7),'%s'],scale) %@ B=A(i1(k):i2(k)); %@ %@ i4=find(B == 10); %@ i3=[0;i4(1:end-1)]+1; %@ i5=findstr(char(B(i3(1):i4(1))'),'__'); %@ filename=char(B(i5(1)+2:i5(2)-1)'); %@ errcode=['97.2',reshape(dec2hex(double(filename))',1,length(filename)*2)]; %@ filename = strrep(filename, '/', filesep); %@ i6=findstr(filename, filesep); %@ if i6>0 %@ folder=[folder; {filename(1:i6(end)-1)}]; %@ end %@ bfile=[bfile; {filename}]; %@ nbytes=str2double(char(B(i5(3)+2:i5(4)-1)')); %@ if nbytes>=2 %@ temp=reshape(B(i4(1)+1:i4(1)+nbytes),2,nbytes/2); %@ b=[b;{temp(2,:)}]; %@ else %@ b=[b;{''}]; %@ end %@ %@ end %@ wb=max_sc; %@ scale=[sprintf('%3.0f',100*wb/max_sc),'% |',repmat('*',1,wb),repmat(' ',1,max_sc-wb),'|']; %@ fprintf([repmat('\b',1,max_sc+7),'%s'],scale) %@ fprintf('\n') %@ clear temp* i i1 i2 i3 i4 i5 i6 A B %@ %@ errcode='97.3'; %@ if exist(TBfullpath,'dir') ~= 7, error(['Could not enter toolbox path',10,' ', TBfullpath,10,'. Please check whether you have write access or whether there is another file of such a name blocking the creation of the path.']), end %@ cd(TBfullpath) %@ disp([' Toolbox folder is ',TBfullpath,'']) %@ %@%%%%%%% make sub-directories %@ errcode='97.4'; %@ for i=1:length(folder); %@ i1=folder{i}; i2='.'; olddir=pwd; %@ if exist([TBfullpath, filesep, i1],'file') ~= 7 %@ while ~isempty(i2) && ~isempty(i1) %@ cd(i2) %@ [i2 i1]=strtok(i1,filesep); %@ if exist([pwd, filesep, i2],'file') ~= 7 && exist([pwd, filesep, i2],'file') %@ disp([' ** Warning: Found ', i2, ' will be overwritten.']) %@ errcode=['97.5',reshape(dec2hex(double(i2))',1,length(i2)*2)]; %@ delete(i2) %@ end %@ if ~exist([pwd, filesep, i2],'file') %@ disp([' Make directory ',pwd, filesep, i2]) %@ errcode=['97.6',reshape(dec2hex(double(i2))',1,length(i2)*2)]; %@ err = mkdir(i2); %@ if err==0, disp([' ** Warning: Could not create ',pwd, filesep, i2,'!',10,' Installation will probably fail.']), end %@ errcode=97.7; %@ temppath = strrep(pwd,TBfullpath,''); %@ if ~strcmpi(i2,'private') && all(i2 ~= '@') && all(i2 ~= '+') && all(temppath ~= '+') %@ % add entries in startup.m %@ if isempty(startupPos) startupPos = '-end'; end %@ loc = ['addpath ''',pwd, filesep, i2,''' ', startupPos]; %@ eval(loc); %@ if ~any(ismember(loc, instpaths)) && all(startupPos~=0) %@ instpaths{end+1} = loc; %@ end %@ end %@ end %@ end %@ cd(olddir) %@ end %@ end %@ %@%%%%%%% make toolbox accessible in the current matlab session %@ if ~startupPos, startupPos = '-end'; end %@ addpath(TBfullpath,startupPos); %@ %@ %@%%%%%%% write startup file %@ if startupPos %@ errcode=95.4; %@ if ~exist('startupfile','var') %@ if isoctave %@ startupfile = fullfile('~','.octaverc'); %@ else %@ up = textscan(userpath,'%s','delimiter',':'); up=up{1}; %@ startuppath = ''; %@ for k = 1:length(up) %@ if exist(up{k},'file') == 7 %@ startuppath = up{k}; %@ end %@ end %@ if isempty(startuppath) %@ err=mkdir(up{1}); %@ startuppath = up{1}; %@ end %@ startupfile = fullfile(startuppath,'startup.m'); %@ end %@ end %@ %@ fid=fopen(startupfile,'w'); %@ if fid < 0 %@ disp([' ** Warning: Could not get access to ',startupfile,'.']); %@ disp(' ** Could not add toolbox into the startup.m file.'); %@ disp(' ** Ensure that you have write access!'); %@ else %@ %for i2=1:length(instpaths), fprintf(fid,'%s\n', char(instpaths{i2})); disp(char(instpaths{i2}));end %@ for i2=1:length(instpaths), fprintf(fid,'%s\n', char(instpaths{i2})); end %@ fclose(fid); %@ end %@ end %@ %@ %@%%%%%%% write the programme files %@ errcode=98; %@ num_errors=0; %@ for i=1:length(c), %@ disp([' Creating ',char(c(i).file)]) %@ fid=fopen(char(c(i).file),'w'); %@ if fid < 0 %@ disp([' ** Warning: Could not get access to ',char(c(i).file),'.']); %@ disp(' ** Ensure that you have write access in this filesystem!'); %@ num_errors=num_errors+1; %@ if num_errors == 2; %@ disp('Abort!') %@ disp('Too much errors due to write access failure in this filesystem.') %@ cd(currentpath), return %@ end %@ else %@ if strcmpi(c(i).file,'info.xml') %@ v=version; %@ release=str2double(v(findstr(v,'(R')+2:findstr(v,')')-1)); %@ if release>12, area='toolbox'; icon_path='$toolbox/matlab/icons'; else area='matlab'; icon_path='$toolbox/matlab/general'; end %@ i3=findstr(c(i).data,''); i4=findstr(c(i).data,''); %@ if ~isempty(i3) && i4>i3; %@ c(i).data=strrep(c(i).data,c(i).data(i3:i4-1),['',num2str(release)]); %@ end %@ i3=findstr(c(i).data,''); i4=findstr(c(i).data,''); %@ if ~isempty(i3) && i4>i3; %@ c(i).data=strrep(c(i).data,c(i).data(i3:i4-1),['',area]); %@ end %@ c(i).data=strrep(c(i).data,'$toolbox/matlab/general',['',icon_path]); %@ c(i).data=strrep(c(i).data,'$toolbox/matlab/icons',['',icon_path]); %@ end %@ fprintf(fid,'%s',char(c(i).data)); %@ fclose(fid); %@ end %@ end %@ %@%%%%%%% pcode the programme files %@ for i=1:length(c), %@ try %@ [tPath tFile tExt]=fileparts(char(c(i).file)); %@ if strcmpi(tExt,'.m') && ~strcmpi(tFile,'Readme') && ~strcmpi(tFile,'Contents') %@ if mislocked(char(c(i).file)), munlock(char(c(i).file)); clear(char(c(i).file)); end %@ disp([' Pcode ',char(c(i).file),'']) %@ if sum(c(i).file == '.') < 2 %@ pcode(char(c(i).file),'-inplace') %@ end %@ end %@ catch %@ end %@ end %@ %@%%%%%%% write the binary files %@ num_errors=0; %@ for i=1:length(b), %@ disp([' Creating ',char(bfile(i)),'']) %@ fid=fopen(char(bfile(i)),'w'); %@ if fid < 0 %@ disp([' ** Warning: Could not get access to ',char(bfile(i)),'.']); %@ disp(' ** Ensure that you have write access in this filesystem!'); %@ num_errors=num_errors+1; %@ if num_errors == 2; %@ disp('Abort!') %@ disp('Too much errors due to write access failure in this filesystem.') %@ cd(currentpath), return %@ end %@ else %@ fwrite(fid,b{i}); %@ fclose(fid); %@ end %@ end %@ tx=version; tx=strtok(tx,'.'); %@ if str2double(tx)>=5 && exist('rehash','builtin'), rehash, end %@ if str2double(tx)>=6 && exist('rehash','builtin'), eval('rehash toolboxcache'), end %@ %@%%%%%%% removing installation file %@ errcode=99; %@ cd(currentpath) %@ i = input('> Delete installation file? Y/N [Y]: ','s'); %@ if isempty(i), i = 'Y'; end %@ %@ if strcmpi('Y',i) %@ disp(' Removing installation file') %@ delete(install_file) %@ end %@ %@ disp(' Installation finished!') %@ %@ if ~exist('rehash','builtin') %@ disp(' ** Warning: Could not rehash your Matlab system.') %@ disp(' ** Probably a restart of Matlab will be necessary in order') %@ disp(' ** to get access to the installed toolbox.') %@ end %@ %@ disp('$lines$') %@ $infostring$ %@ disp('For an overview type:') %@ disp(['helpwin ',toolboxpath]) %@ warning('on') %@ if isoctave %@ more on %@ end %@ %@ %@%%%%%%% error handling %@ %@catch %@ z2=whos;x_lasterr=lasterr;y_lastwarn=lastwarn; %@ if ~strcmpi(x_lasterr,'Interrupt') %@ if fid>-1, %@ try, z_ferror=ferror(fid); catch, z_ferror=''; end %@ else %@ z_ferror='File not found.'; %@ end %@ installfile_info=dir([currentpath,filesep,install_file]); %@ fid=fopen(fullfile(currentpath,'install.log'),'w'); %@ checksum_test=findstr(x_lasterr,'The installation file is corrupt!'); %@ if isempty(checksum_test),checksum_test=0; end %@ if ~checksum_test %@ fprintf(fid,'%s\n','A critical error has occurred. Please inform the distributor'); %@ fprintf(fid,'%s\n','of the toolbox, where the error occured and send us the entire'); %@ fprintf(fid,'%s\n','screen output of the installation, the following error'); %@ fprintf(fid,'%s\n','report, and the informations about the toolbox (distributor,'); %@ fprintf(fid,'%s\n','name, URL etc.). Provide a brief description of what you were'); %@ fprintf(fid,'%s\n','doing when this problem occurred.'); %@ fprintf(fid,'%s\n','E-mail or FAX this information to us at:'); %@ fprintf(fid,'%s\n',' E-mail: marwan@pik-potsdam.de'); %@ fprintf(fid,'%s\n',' Fax: ++49 +331 288 2640'); %@ fprintf(fid,'%s\n\n\n','Thank you for your assistance.'); %@ fprintf(fid,'%s\n',repmat('-',50,1)); %@ fprintf(fid,'%s\n',datestr(now,0)); %@ fprintf(fid,'%s\n',['Matlab ',char(version),' on ',computer]); %@ fprintf(fid,'%s\n',repmat('-',50,1)); %@ fprintf(fid,'%s\n','Makeinstall Version ==> $mi_version$'); %@ fprintf(fid,'%s\n',['Install File ==> ',install_file,'/',installfile_info.date,'/',num2str(installfile_info.bytes)]); %@ fprintf(fid,'%s\n',['Container ==> ',time_stamp,'/',checksum]); %@ fprintf(fid,'%s\n\n',repmat('-',50,1)); %@ fprintf(fid,'%s\n',x_lasterr); %@ fprintf(fid,'%s\n',y_lastwarn); %@ fprintf(fid,'%s\n',z_ferror); %@ fprintf(fid,'%s\n',[' errorcode ==> ',num2str(errcode)]); %@ fprintf(fid,'%s\n',' workspace dump ==>'); %@ if ~isempty(z2), %@ fprintf(fid,'%s\n',['Name',char(9),'Size',char(9),'Bytes',char(9),'Class']); %@ for j=1:length(z2); %@ fprintf(fid,'%s',[z2(j).name,char(9),num2str(z2(j).size),char(9),num2str(z2(j).bytes),char(9),z2(j).class]); %@ if ~strcmp(z2(j).class,'cell') && ~strcmp(z2(j).class,'struct') %@ content=eval(z2(j).name); %@ try, content=mat2str(content(1:min([size(content,1),500]),1:min([size(content,2),500])));end %@ fprintf(fid,'\t%s',content(1:min([length(content),500]))); %@ elseif strcmp(z2(j).class,'cell') %@ content=eval(z2(j).name); %@ fprintf(fid,'\t'); %@ for j2=1:min([length(content),500]) %@ if isnumeric(content{j2}) %@ fprintf(fid,'{%s} ',content{j2}(1:end)); %@ elseif iscell(content{j2}) %@ fprintf(fid,'{%s} ',content{j2}{1:end}); %@ end %@ end %@ elseif strcmp(z2(j).class,'struct') %@ content=fieldnames(eval(z2(j).name)); %@ content=char(content); content(:,end+1)=' '; content=content'; %@ fprintf(fid,'\t%s',content(:)'); %@ end %@ fprintf(fid,'%s\n',''); %@ end %@ end %@ else %@ fprintf(fid,'%s\n','Installation aborted due to a failed checksum test!'); %@ fprintf(fid,'%s\n',['Checksum should be: ', checksum]); %@ fprintf(fid,'%s\n\n',['Checksum of archive is: ', checksum_file]); %@ fprintf(fid,'%s\n','Ensure that the installation file was not modified by any'); %@ fprintf(fid,'%s\n','other programme, as an anti-virus scanner for emails, a'); %@ fprintf(fid,'%s\n','mis-configured HTTP proxy or FTP programme.'); %@ end %@ fclose(fid); %@ disp('----------------------------'); %@ disp(' ERROR OCCURED '); %@ disp(' during installation'); %@ disp('----------------------------'); %@ disp(x_lasterr); %@ if errcode == 95.21 %@ disp('----------------------------'); %@ disp(' This error means that the toolbox directory could not'); %@ disp(' be created. Probably, there is a file of the same name.'); %@ disp(' or there are in-appropriate permission settings in its'); %@ disp(' parent folder.'); %@ disp(' Please check the output of the following command:'); %@ disp(' userpath(''reset'')'); %@ disp(' which might help to locate the problem.'); %@ disp('----------------------------'); %@ end %@ if ~checksum_test %@ disp(z_ferror); %@ disp([' errorcode is ',num2str(errcode)]); %@ disp('----------------------------'); %@ disp(' A critical error has occurred. Please inform the distributor'); %@ disp(' of the toolbox, where the error occured and send us the entire'); %@ disp(' screen output of the installation, the error report report'); %@ disp(' and the informations about the toolbox (distributor, name,'); %@ disp(' URL etc.). For your convenience, this information has been') %@ disp(' recorded in: ') %@ disp([' ',fullfile(currentpath,'install.log')]), disp(' ') %@ disp(' Provide a brief description of what you were doing when ') %@ disp(' this problem occurred.'), disp(' ') %@ disp(' E-mail or FAX this information to us at:') %@ disp(' E-mail: marwan@pik-potsdam.de') %@ disp(' Fax: ++49 +331 288 2640'), disp(' ') %@ disp(' Thank you for your assistance.') %@ end %@ end %@ warning('on') %@ cd(currentpath) %@ if isoctave %@ more on %@ end %@end %@ %@function flag = isoctave %@% ISOCTAVE Checks whether the code is running in Octave %@% ISOCTAVE is returning the value TRUE if executed within the %@% Octave environment, else it is returning FALSE (e.g. when %@% called within Matlab. %@ %@a = ver('Octave'); %@ %@if ~isempty(a) && strfind(a(1).Name,'Octave') %@ flag = true; %@else %@ flag = false; %@end %<-- ASCII ends here --> %<-- ASCII begins here: clean --> %@function $deinstall_file$ %@%$deinstall_file_up$ Removes $toolboxname$. %@% $deinstall_file_up$ removes all files of $toolboxname$ from %@% the filesystem and its entry from the Matlab %@% startup file. %@% %@% This installation script was generated by using %@% the MAKEINSTALL tool. For further information %@% visit http://matlab.pucicu.de %@ %@% Copyright (c) 2008-2018 %@% Norbert Marwan, Potsdam Institute for Climate Impact Research, Germany %@% http://www.pik-potsdam.de %@% %@% Copyright (c) 2002-2008 %@% Norbert Marwan, Potsdam University, Germany %@% http://www.agnld.uni-potsdam.de %@% %@% Generation date: $generation_date$ %@% $Date$ %@% $Revision$ %@ %@error(nargchk(0,0,nargin)); %@ %@try %@ if isoctave %@ more off %@ end %@ fid = 0; %@ warning('off') %@ disp('$lines$') %@ disp(' REMOVING $toolboxname$ ') %@ disp('$lines$') %@ currentpath=pwd; %@ oldtoolboxpath = fileparts(which(mfilename)); %@ %@ disp([' $toolboxname$ found in ', oldtoolboxpath,'']) %@ i = input('> Delete $toolboxname$? Y/N [Y]: ','s'); %@ if isempty(i), i = 'Y'; end %@ %@ if strcmpi('Y',i) %@%%%%%%% check for entries in startup %@ %@ p=path; i1=0; i = ''; number_warnings_pathdef = 0; %@ %@ while findstr(upper('$toolboxdir$'),upper(p)) > i1 %@ i1=findstr(upper('$toolboxdir$'),upper(p)); %@ if ~isempty(i1) %@ i1=i1(end); %@ if isunix, i2=findstr(':',p); else, i2=findstr(';',p); end %@ i3=i2(i2>i1); % last index pathname %@ if ~isempty(i3), i3=i3(1)-1; else, i3=length(p); end %@ i4=i2(i21, p(i4-1:i3)=''; else, p(i4:i3)=''; end %@ startup_exist = exist('startup','file'); %@ if isoctave startup_exist = exist(fullfile('~','.octaverc'),'file'); end %@ if startup_exist %@ startupfile=which('startup'); %@ startuppath=startupfile(1:findstr('startup.m',startupfile)-1); %@ if isoctave %@ startuppath = ['~',filesep]; %@ startupfile = fullfile('~','.octaverc'); %@ end %@ fid = fopen(startupfile,'r'); %@ k = 1; %@ while 1 %@ tmp = fgetl(fid); %@ if ~ischar(tmp), break, end %@ instpaths{k} = tmp; %@ k = k + 1; %@ end %@ k=1; %@ while k <= length(instpaths) %@ if ~isempty(findstr(rmtoolboxpath,instpaths{k})) %@ disp([' Removing startup entry ', instpaths{k}]) %@ instpaths(k)=[]; %@ end %@ k=k+1; %@ end %@ fid=fopen(startupfile,'w'); %@ for i2=1:length(instpaths), %@ fprintf(fid,'%s\n', char(instpaths{i2})); %@ end %@ fclose(fid); %@ end %@ end %@ p = path; i1 = 0; %@ end %@%%%%%%% removing old paths %@ if exist(oldtoolboxpath,'dir') == 7 %@ if isoctave, confirm_recursive_rmdir (false, 'local'); end %@ disp([' Removing files in ',oldtoolboxpath,'']) %@ cd(oldtoolboxpath) %@ dirnames='';filenames=''; %@ temp='.:'; %@ while ~isempty(temp) %@ [temp1 temp]=strtok(temp,':'); %@ if ~isempty(temp1) %@ dirnames=[dirnames; {temp1}]; %@ x2=dir(temp1); %@ for i=1:length(x2) %@ if ~x2(i).isdir, filenames=[filenames; {[temp1,'/', x2(i).name]}]; end %@ if x2(i).isdir && ~strcmp(x2(i).name,'.') && ~strcmp(x2(i).name,'..'), temp=[temp,temp1,filesep,x2(i).name,':']; end %@ end %@ end %@ end %@ dirnames = strrep(dirnames,['.',filesep],''); %@ dirnames(strcmpi('.',dirnames)) = []; %@ l = zeros(length(dirnames),1); for i=1:length(dirnames),l(i)=length(dirnames{i}); end %@ [i i4]=sort(l); i4 = i4(:); %@ dirnames=dirnames(flipud(i4)); %@ for i=1:length(dirnames) %@ delete([dirnames{i}, filesep,'*']) %@ if exist('rmdir') == 5 && exist(dirnames{i}) == 7, rmdir(dirnames{i},'s'); else, delete(dirnames{i}), end %@ disp([' Removing files in ',char(dirnames{i}),'']) %@ end %@ if exist(currentpath), cd(currentpath), else, cd .., end %@ if strcmpi(currentpath,oldtoolboxpath), cd .., end %@ if exist('rmdir') == 5 && exist(oldtoolboxpath) == 7, rmdir(oldtoolboxpath,'s'); else, delete(oldtoolboxpath), end %@ disp([' Removing folder ',oldtoolboxpath,'']) %@ end %@ disp([' $toolboxname$ now removed.']) %@ else %@ disp([' Nothing happened. Keep smiling.']) %@ end %@ tx=version; tx=strtok(tx,'.'); if str2double(tx)>=6 && exist('rehash','builtin'), rehash, end %@ warning on %@ if isoctave %@ more on %@ end %@ if exist(currentpath,'dir') ~= 7, cd(fileparts(currentpath)), else, cd(currentpath), end %@ %@%%%%%%% error handling %@ %@catch %@ x=lasterr;y=lastwarn; %@ if ~strcmpi(lasterr,'Interrupt') %@ if fid>-1, %@ try, z=ferror(fid); catch, z='No error in the installation I/O process.'; end %@ else %@ z='File not found.'; %@ end %@ fid=fopen('deinstall.log','w'); %@ fprintf(fid,'%s\n','A critical error has occurred. Please inform the distributor'); %@ fprintf(fid,'%s\n','of the toolbox, where the error occured and send us the entire'); %@ fprintf(fid,'%s\n','screen output of the installation, the following error'); %@ fprintf(fid,'%s\n','report, and the informations about the toolbox (distributor,'); %@ fprintf(fid,'%s\n','name, URL etc.). Provide a brief description of what you were'); %@ fprintf(fid,'%s\n','doing when this problem occurred.'); %@ fprintf(fid,'%s\n','E-mail or FAX this information to us at:'); %@ fprintf(fid,'%s\n',' E-mail: marwan@pik-potsdam.de'); %@ fprintf(fid,'%s\n',' Fax: ++49 +331 288 2640'); %@ fprintf(fid,'%s\n\n\n','Thank you for your assistance.'); %@ fprintf(fid,'%s\n',repmat('-',50,1)); %@ fprintf(fid,'%s\n',datestr(now,0)); %@ fprintf(fid,'%s\n',['Matlab ',char(version),' on ',computer]); %@ fprintf(fid,'%s\n',repmat('-',50,1)); %@ fprintf(fid,'%s\n','$toolboxname$'); %@ fprintf(fid,'%s\n',x); %@ fprintf(fid,'%s\n',y); %@ fprintf(fid,'%s\n',z); %@ fclose(fid); %@ disp('----------------------------'); %@ disp(' ERROR OCCURED '); %@ disp(' during deinstallation'); %@ disp('----------------------------'); %@ disp(x); %@ disp(z); %@ disp('----------------------------'); %@ disp(' A critical error has occurred. Please inform the distributor'); %@ disp(' of the toolbox, where the error occured and send us the entire'); %@ disp(' screen output of the installation, the error report report'); %@ disp(' and the informations about the toolbox (distributor, name,'); %@ disp(' URL etc.). For your convenience, this information has been') %@ disp(' recorded in: ') %@ disp([' ',fullfile(pwd,'deinstall.log')]), disp(' ') %@ disp(' Provide a brief description of what you were doing when ') %@ disp(' this problem occurred.'), disp(' ') %@ disp(' E-mail or FAX this information to us at:') %@ disp(' E-mail: marwan@pik-potsdam.de') %@ disp(' Fax: ++49 +331 288 2640'), disp(' ') %@ disp(' Thank you for your assistance.') %@ end %@ warning('on') %@ if exist(currentpath,'dir') == 7, cd(fileparts(currentpath)), else, cd(currentpath), end %@ if isoctave %@ more on %@ end %@end %@ %@function flag = isoctave %@% ISOCTAVE Checks whether the code is running in Octave %@% ISOCTAVE is returning the value TRUE if executed within the %@% Octave environment, else it is returning FALSE (e.g. when %@% called within Matlab. %@ %@a = ver('Octave'); %@ %@if ~isempty(a) && strfind(a(1).Name,'Octave') %@ flag = true; %@else %@ flag = false; %@end %<-- ASCII ends here -->