; Header File ; Created 20/10/2004; 12:30:40 conflib@0003: ;short reglib::get_string_key(const char *file, const char *key, const char *value, long max_length, const char *default) movem.l a0-a6/d1-d7,-(a7) move.l 200,a5 lea (7+7)*4+4(a7),a0 move.l (a0)+,a6; char *file move.l (a0)+,a1; char *section bsr write_section move.l (a0)+,a4; char *key move.l (a0)+,_value; const char *value move.l (a0)+,_max_length; long max_length move.l (a0)+,_default; char *default bsr get_file move.w d0,d6 beq \file_not_found bsr deref addq.l #5,a0 \loop: tst.b (a0) beq \key_not_found move.l a0,a2 bsr match_key cmp.b #1,_section_is_good bne \skip_section tst.w d0 bne \found \skip_section: bsr next_key move.l a0,d0 bne \loop \key_not_found: moveq #CONFLIB_KEY_NOT_FOUND,d0 bra \exit_on_error \found: bsr is_valid_string move.l a0,d1 beq \key_invalid moveq #CONFLIB_OK,d0 move.l _value(pc),a0 addq.l #1,a1 move.l _max_length(pc),d1 \good_loop: move.b (a1)+,(a0)+ cmp.b #'"',-1(a0) beq \skip dbra d1,\good_loop \skip: clr.b -1(a0) bra \exit \key_invalid: moveq #CONFLIB_INVALID_KEY,d0 bra \exit_on_error \file_not_found: moveq #CONFLIB_FILE_NOT_FOUND,d0 \exit_on_error: move.l _default(pc),a0 move.l a0,d1 beq \exit \copie_value: move.l _value(pc),a1 move.l _max_length(pc),d1 subq.l #1,d1 \default_loop: move.b (a0)+,(a1)+ dbra d1,\default_loop \exit: movem.l (a7)+,a0-a6/d1-d7 rts