Changeset 989:1b3cc75a9bab for charset.c
Legend:
- Unmodified
- Added
- Removed
-
charset.c
r987 r989 877 877 d->out.size = DECODER_BUFFSIZE; 878 878 879 d->_in = &d->out; 880 879 881 if (!src || !dest || mutt_is_utf8 (dest)) 880 882 { 881 883 d->just_take_id = 1; 884 d->_in = &d->in; 882 885 return d; 883 886 } … … 888 891 { 889 892 d->just_take_id = 1; 893 d->_in = &d->in; 890 894 return d; 891 895 } … … 896 900 897 901 if (!(d->chm = mutt_get_translation (src, dest))) 902 { 898 903 d->just_take_id = 1; 899 904 d->_in = &d->in; 905 } 906 900 907 return d; 901 908 } … … 910 917 void mutt_decoder_push (DECODER *d, void *_buff, size_t blen, size_t *taken) 911 918 { 912 struct decoder_buff *b;913 914 919 if (!_buff || !blen) 915 920 { … … 917 922 return; 918 923 } 919 920 /* shortcut the identity mapping and save one copying pass */ 921 922 if (d->just_take_id) 923 b = &d->out; 924 else 925 b = &d->in; 926 927 if ((*taken = MIN(blen, b->size - b->used))) 928 { 929 memcpy (b->buff + b->used, _buff, *taken); 930 b->used += *taken; 924 925 if ((*taken = MIN(blen, d->_in->size - d->_in->used))) 926 { 927 memcpy (d->_in->buff + d->_in->used, _buff, *taken); 928 d->_in->used += *taken; 931 929 } 932 930 } … … 934 932 int mutt_decoder_push_one (DECODER *d, char c) 935 933 { 936 struct decoder_buff *b; 937 938 if (d->just_take_id) 939 b = &d->out; 940 else 941 b = &d->in; 942 943 if (b->used == b->size) 934 if (d->_in->used == d->_in->size) 944 935 return -1; 945 946 b->buff[b->used++] = c;936 937 d->_in->buff[d->_in->used++] = c; 947 938 return 0; 948 939 }
