pro pack,lpack_filename,filelist,verbose=verbose,output_dir=output_dir if n_elements(output_dir) gt 0 then pack_filename=output_dir+lpack_filename else pack_filename=lpack_filename file_delete,pack_filename,/allow_nonexistent,verbose=verbose ;Tar it up if (!VERSION.OS_FAMILY eq 'Windows') then begin file_delete,pack_filename+'.filelist.txt',verbose=verbose,/allow_nonexistent openw,ouf,pack_filename+'.filelist.txt',/get_lun for i=0,n_elements(filelist)-1 do printf,ouf,'"'+filelist[i]+'"' close,ouf free_lun,ouf spawn_cmd = !7Z_PATH+'\7za a -r -ttar "'+pack_filename+'" "@'+pack_filename+'.filelist.txt"' if keyword_set(verbose) then print, spawn_cmd spawn, spawn_cmd,/noshell,result ;clean up the file list file_delete,pack_filename+'.filelist.txt',verbose=verbose endif else begin if keyword_set(verbose) then tar_cmd='tar cv ' else tar_cmd='tar c ' tar_cmd += '-f '+ pack_filename for file_index=0, n_elements(filelist)-1 do begin if strpos(filelist[file_index],'*') ge 0 then begin tar_cmd +=' `find . -name "'+filelist[file_index]+'" | sed "s/^\.\///g"`' end else begin tar_cmd +=' ' + filelist[file_index] end endfor if keyword_set(verbose) then print, tar_cmd spawn, tar_cmd, result endelse ;show output if keyword_set(verbose) then for i=0,n_elements(result)-1 do print,result[i] end