;+ ; NAME: ; smei_star_readpnt ; PURPOSE: ; Reads time series files into smei_star_fit structure ; CATEGORY: ; camera/idl/star ; CALLING SEQUENCE: FUNCTION smei_star_readpnt, filename, stars, $ hdr = hdr , $ nohdr = nohdr , $ error_message = error_message, $ silent = silent ; INPUTS: ; filename scalar; type: string ; fully-qualified filename ; OUTPUTS: ; smei_star_readpnt ; OPTIONAL OUTPUT PARAMETERS: ; hdr=hdr array; type: string ; header (lines at beginning of file starting ; with semi-colon) ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; smei_star_formatpnt, destroyvar, boost ; InitVar, gunzip_file, hide_env ; EXTERNAL: ; smei_star_fit__define ; PROCEDURE: ; MODIFICATION HISTORY: ; AUG-2006, Paul Hick (UCSD/CASS) ; SEP-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ; Added hdr keyword ;- InitVar, nohdr, /key InitVar, silent, 0 status = 0 ; If filename is blank then file_search returns a ; list of all file names in the working dir IF strcompress(filename, /rem) EQ '' THEN BEGIN errormessage = 'blank file name specified' if silent le 0 then message, /info, errormessage RETURN, status ENDIF ; If file found then unzip if necessary. ; If file not found try adding .gz extension. fi = (file_search(filename))[0] fi_env = filename+(['','.gz'])[fi eq ''] gzipped = gunzip_file(fi_env, rawfile, check=fi eq '',isgz=isgz) fi_env = hide_env(fi_env) CASE gzipped OF 0: IF isgz THEN fi = '' 1: fi = rawfile ENDCASE IF fi EQ '' THEN BEGIN errormessage = 'file not found or unzip error: '+fi_env if silent le 0 then message, /info, errormessage RETURN, status ENDIF titles = smei_star_formatpnt(/get_titles) error_message = '' status = 1 IF silent LE 0 THEN message, /info, fi_env on_ioerror, IOERROR openr, /get_lun, iu, fi IF NOT nohdr THEN BEGIN rec = '' destroyvar, hdr REPEAT BEGIN readf, iu, rec boost, hdr, rec ENDREP UNTIL rec EQ titles ENDIF point_lun, -iu, ptr ; Assumes 1-byte record terminator n = ((fstat(iu)).size-ptr)/(strlen(titles)+1) stars = replicate( {smei_star}, n ) readf, iu, format=smei_star_formatpnt(/get_format), stars free_lun, IU on_ioerror, NULL IF gzipped THEN tmp = do_file(/delete, rawfile, /silent) RETURN, status IOERROR: ; I/O error label status = 0 stars = -1 errormessage = !error_state.msg IF silent LE 0 then message, /info, errormessage free_lun, IU on_ioerror, NULL IF gzipped THEN tmp = do_file(/delete, rawfile, /silent) RETURN, status & END