/usr/share/gnudatalanguage/lib/restore.pro is in libgnudatalanguage0 0.9.7-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | ;+
; NAME: RESTORE
;
; PURPOSE:
; Serves as a wrapper around CMSAVE from Craig B. Markwardt CMVSLIB
; library. You must download and install yourself this CMVSLIB library
; then add it PATH in your GDL_PATH. This library can be found here:
; http://cow.physics.wisc.edu/~craigm/idl/cmsave.html
;
; MODIFICATION HISTORY:
; 01-Sep-2006 : written by Joel Gales
; 15-dec-2006 : by Alain Coulais (AC)
; 1/ explicite HTTP link in header to external CMVSLIB library
; 2/ test via EXECUTE() in pro to warn new users for missing
; external CMVSLIB library
; 12-feb-2007: modifications by AC:
; 1a/ managing filename.
; 1b/ default filename if no filename provided (see CMSAVE)
; 2/ add keyword /verbose ... (but bug in CMRESTORE (2 time print !))
; 3/ warning for 3 keywords not managed yet
; 13-Nov-2012: modifications by AC:
; 1/ feature request 3581835
; 2/ proper STRING conversion of input file name
; 3/ extra keywords /help and /test
;
; LICENCE:
; Copyright (C) 2006-2012, J. Gales and A. Coulais
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
;-
pro RESTORE, filename0, filename=filename1, $
RELAXED_STRUCTURE_ASSIGNMENT=RELAXED_STRUCTURE_ASSIGNMENT, $
DESCRIPTION=DESCRIPTION, RESTORED_OBJECTS=RESTORED_OBJECTS, $
help=help, verbose=verbose, test=test
ON_ERROR, 2
;
if KEYWORD_SET(help) then begin
print, 'pro RESTORE, filename0, filename=filename1'
print, ' RELAXED_STRUCTURE_ASSIGNMENT=RELAXED_STRUCTURE_ASSIGNMENT, $'
print, ' DESCRIPTION=DESCRIPTION, RESTORED_OBJECTS=RESTORED_OBJECTS, $'
print, ' help=help, verbose=verbose, test=test'
return
end
;
if (EXECUTE('res=CMSVLIB(/QUERY)') EQ 0) then begin
MESSAGE, /CONTINUE, "Missing CMSVlib in your GDL_PATH or IDL_PATH"
MESSAGE, /CONTINUE, "please read RESTORE header for help."
return
endif
;
; not available KEYWORDs (compatibility reasons)
;
if (N_ELEMENTS(RELAXED_STRUCTURE_ASSIGNMENT) GT 0) then begin
print, "% RESTORE: keyword RELAXED_STRUCTURE_ASSIGNMENT not managed"
endif
;
if (N_ELEMENTS(DESCRIPTION) GT 0) then begin
print, "% RESTORE: keyword DESCRIPTION not managed"
endif
;
if (N_ELEMENTS(RESTORED_OBJECTS) GT 0) then begin
print, "% RESTORE: keyword RESTORED_OBJECTS not managed"
endif
;
; what is the effective filename ?
;
if (N_ELEMENTS(filename0) EQ 0) AND (N_ELEMENTS(filename1) EQ 0) then begin
;; filename set by default
filename = 'cmsave.sav'
print, "% RESTORE: default FILENAME is used : ", filename
endif else begin
;; when f0 and f1 are both provided, param f0 is used ...
if (N_ELEMENTS(filename1) GT 0) then filename=filename1
if (N_ELEMENTS(filename0) GT 0) then filename=filename0
;;
;; one and only one file at a time
if (N_ELEMENTS(filename) GT 1) then begin
txt = "Expression must be a scalar or 1 element array in this context: "
HELP, filename, out=out
mess='<'+STRTRIM(STRMID(out, STRLEN('filename')),2)+'>'
MESSAGE, txt + mess
endif
;;
;; Can we convert the "filename" into a true string ...
res=EXECUTE('tmp_name=STRING(filename)')
if (res EQ 0) then begin
return
endif else begin
filename=tmp_name
endelse
;;
endelse
;
; we check whether the file is here or not ...
;
if (FILE_TEST(filename) NE 1) then begin
MESSAGE, "FILE not found : "+filename
endif
;
CMRESTORE, filename, verbose=verbose, names=_nme_, $
data=data, pass_method='struct'
;
for i = 0, N_ELEMENTS(_nme_) - 1 do begin
dummy = ROUTINE_NAMES(_nme_[i], data.(i), store=-1)
endfor
;
if KEYWORD_SET(test) then STOP
;
end
|