… | |
… | |
88 | if (status) |
88 | if (status) |
89 | *status = 0; |
89 | *status = 0; |
90 | return *ptr0 + (*ptr1 << 8) + (*ptr2 << 16) + (*ptr3 << 24); |
90 | return *ptr0 + (*ptr1 << 8) + (*ptr2 << 16) + (*ptr3 << 24); |
91 | } |
91 | } |
92 | |
92 | |
|
|
93 | psiconv_s32 psiconv_read_sint(const psiconv_buffer buf,int lev,psiconv_u32 off, |
|
|
94 | int *length,int *status) |
|
|
95 | { |
|
|
96 | int localstatus; |
|
|
97 | psiconv_u32 temp; |
|
|
98 | |
|
|
99 | temp=psiconv_read_u32(buf,lev,off,&localstatus); |
|
|
100 | if (status) |
|
|
101 | *status = localstatus; |
|
|
102 | if (length) |
|
|
103 | *length = localstatus?0:4; |
|
|
104 | |
|
|
105 | return localstatus?0:(temp & 0x7fffffff)*(temp&0x80000000?-1:1); |
|
|
106 | } |
|
|
107 | |
93 | psiconv_S_t psiconv_read_S(const psiconv_buffer buf, int lev, psiconv_u32 off, |
108 | psiconv_S_t psiconv_read_S(const psiconv_buffer buf, int lev, psiconv_u32 off, |
94 | int *length,int *status) |
109 | int *length,int *status) |
95 | { |
110 | { |
96 | psiconv_u8 temp; |
111 | psiconv_u8 temp; |
97 | psiconv_S_t res; |
112 | psiconv_S_t res; |
… | |
… | |
105 | res = psiconv_read_u8(buf,lev+2,off,&localstatus) >> 2; |
120 | res = psiconv_read_u8(buf,lev+2,off,&localstatus) >> 2; |
106 | if (localstatus) |
121 | if (localstatus) |
107 | goto ERROR; |
122 | goto ERROR; |
108 | len = 1; |
123 | len = 1; |
109 | psiconv_debug(lev+2,off,"Indicator (1 byte): %02x",res); |
124 | psiconv_debug(lev+2,off,"Indicator (1 byte): %02x",res); |
110 | } else if ((temp & 0x07) == 0x03) { |
125 | } else if ((temp & 0x07) == 0x05) { |
111 | res = psiconv_read_u16(buf,lev+2,off,&localstatus) >> 3; |
126 | res = psiconv_read_u16(buf,lev+2,off,&localstatus) >> 3; |
112 | if (localstatus) |
127 | if (localstatus) |
113 | goto ERROR; |
128 | goto ERROR; |
114 | len = 2; |
129 | len = 2; |
115 | psiconv_debug(lev+2,off,"Indicator (2 bytes): %04x",res); |
130 | psiconv_debug(lev+2,off,"Indicator (2 bytes): %04x",res); |