+ if (MaxLineLength > 0) {
+ width = MaxLineLength - WrapMargin - ql - 1;
+ if (option(OPTSTUFFQUOTED))
+ --width;
+ if (width < 0)
+ width = MaxLineLength;
+ } else {
+ width = COLS - WrapMargin - ql - 1;
+ if (option(OPTSTUFFQUOTED))
+ --width;
+ if (width < 0)
+ width = COLS;
+ }
+
+ /* fprintf(stderr,"print_flowed_line will print `%s' with ql = %d\n",line,ql); */
+
+ if (strlen(line)==0) {
+ if (s->prefix)
+ state_puts(s->prefix,s);
+ for (i=0;i<ql;++i) state_putc('>',s);
+ if (option(OPTSTUFFQUOTED))
+ state_putc(' ',s);
+ state_putc('\n',s);
+ return;
+ }
+
+ pos=line+ql+width;
+ oldpos=line+ql;
+ if (ql>0 && ISBLANK(*oldpos)) ++oldpos;
+
+ /* fprintf(stderr,"oldpos = %p line+len = %p\n",oldpos,line+len); */
+
+ for (;oldpos<line+len;pos+=width) {
+ /* fprintf(stderr,"outer for loop\n"); */
+ if (pos<line+len) { /* only search a new position when we're not over the end of the string w/ pos */
+ /* fprintf(stderr,"if 1\n"); */
+ if (*pos == ' ') {
+ /* fprintf(stderr,"if 2: good luck! found a space\n"); */
+ *pos = '\0';
+ ++pos;
+ } else {
+ /* fprintf(stderr,"if 2: else\n"); */
+ char * save = pos;
+ while (pos>=oldpos && !isspace(*pos)) {
+ /* fprintf(stderr,"pos(%p) > oldpos(%p)\n",pos,oldpos); */
+ --pos;
+ }
+ if (pos < oldpos) {
+ /* fprintf(stderr,"wow, no space found, searching the other direction\n"); */
+ pos = save;
+ while (pos < line+len && *pos && !isspace(*pos)) {
+ /* fprintf(stderr,"pos(%p) < line+len(%p)\n",pos,line+len); */
+ ++pos;
+ }
+ /* fprintf(stderr,"found a space pos = %p\n",pos); */
+ }
+ *pos = '\0';
+ ++pos;
+ }
+ } else {
+ /* fprintf(stderr,"if 1 else\n"); */
+ }
+ if (s->prefix)
+ state_puts(s->prefix,s);
+ for (i=0;i<ql;++i)
+ state_putc('>',s);
+ if (option(OPTSTUFFQUOTED) && (ql>0 || s->prefix)) state_putc(' ',s);
+ state_puts(oldpos,s);
+ /* fprintf(stderr,"print_flowed_line: `%s'\n",oldpos); */
+ if (pos<line+len)
+ state_putc(' ',s);
+ state_putc('\n',s);
+ oldpos = pos;
+ }
+ /*state_puts(line,s);
+ state_putc('\n',s);*/
+}