Global Index (short | long) | Local contents | Local Index (short | long)
[status, result] = privdos( varargin )
DOS Execute DOS command in save current directory and return result. Uses built-in DOS command after changing the current directory to one that is not a UNC path or nested too deeply to work reliably. See also DOS.
This function calls | This function is called by |
---|---|
function [status, result] = privdos( varargin ) % Copyright 1984-2000 The MathWorks, Inc. % $Revision: 1.4 $ $Date: 2000/06/01 02:54:05 $ if ~strncmp(computer,'PC',2), error('Printjob DOS method called on non-DOS based platform.') end wasErr = 0; dberror = disabledberror; try %Check to see if cwd is going to be a problem. %UNC test is new (DOS doesn't work on UNC path), CD test is from Jason: %If cwd is bad, move to what is considered the temporary directory %or c:\ if tempdir is itself a UNC directory. if strncmp(tempdir, '\\', 2) tdir = 'c:\'; else tdir = tempdir; end OldDir = pwd; if strncmp( OldDir, '\\', 2 ) %i.e. path starts with \\ cd(tdir) else % This is to check and see if the dos command is working. In Win95 % if the current directory is a deeply nested directory or sometimes % for TAS served file systems, the output pipe does not work. The % solution is to make the current directory safe, C:\ and put it back % when we are done. The test is the cd command, which should always % return something. try [status, result] = dos('cd'); catch result = ''; end if isempty(result) cd(tdir) else OldDir = []; end end %Execute the given DOS command. try [status, result] = dos(varargin{2:end}); catch % Try dos with one output if last command fails. status = dos(varargin{2:end}); result = ''; end catch wasErr = 1; end enabledberror(dberror); %Move back if neccesary. if ~isempty(OldDir) cd(OldDir); end if wasErr error(lasterr) end