| 1717 | //**************************************************************************/ |
| 1718 | |
| 1719 | BOOLEAN ssiWrite(si_link l, leftv data) |
| 1720 | { |
| 1721 | if(SI_LINK_W_OPEN_P(l)==0) |
| 1722 | if (slOpen(l,SI_LINK_OPEN|SI_LINK_WRITE,NULL)) return TRUE; |
| 1723 | ssiInfo *d = (ssiInfo *)l->data; |
| 1724 | d->level++; |
| 1725 | //FILE *fich=d->f; |
| 1726 | while (data!=NULL) |
| 1727 | { |
| 1728 | int tt=data->Typ(); |
| 1729 | void *dd=data->Data(); |
| 1730 | attr *aa=data->Attribute(); |
| 1731 | if ((aa!=NULL) && ((*aa)!=NULL)) // n user attributes |
| 1732 | { |
| 1733 | attr a=*aa; |
| 1734 | int n=0; |
| 1735 | while(a!=NULL) { n++; a=a->next;} |
| 1736 | fprintf(d->f_write,"21 %d %d ",data->flag,n); |
| 1737 | } |
| 1738 | else if (data->flag!=0) // only "flag" attributes |
| 1739 | { |
| 1740 | fprintf(d->f_write,"21 %d 0 ",data->flag); |
| 1741 | } |
| 1742 | if ((dd==NULL) && (data->name!=NULL) && (tt==0)) tt=DEF_CMD; |
| 1743 | // return pure undefined names as def |
| 1744 | |
| 1745 | switch(tt /*data->Typ()*/) |
| 1746 | { |
| 1747 | case 0: /*error*/ |
| 1748 | case NONE/* nothing*/:fputs("16 ",d->f_write); |
| 1749 | break; |
| 1750 | case STRING_CMD: fputs("2 ",d->f_write); |
| 1751 | ssiWriteString(d,(char *)dd); |
| 1752 | break; |
| 1753 | case INT_CMD: fputs("1 ",d->f_write); |
| 1754 | ssiWriteInt(d,(int)(long)dd); |
| 1755 | break; |
| 1756 | case BIGINT_CMD:fputs("4 ",d->f_write); |
| 1757 | ssiWriteBigInt(d,(number)dd); |
| 1758 | break; |
| 1759 | case NUMBER_CMD: |
| 1760 | if (d->r!=currRing) |
| 1761 | { |
| 1762 | fputs("15 ",d->f_write); |
| 1763 | ssiWriteRing(d,currRing); |
| 1764 | if (d->level<=1) fputc('\n',d->f_write); |
| 1765 | } |
| 1766 | fputs("3 ",d->f_write); |
| 1767 | ssiWriteNumber(d,(number)dd); |
| 1768 | break; |
| 1769 | case RING_CMD:fputs("5 ",d->f_write); |
| 1770 | ssiWriteRing(d,(ring)dd); |
| 1771 | break; |
| 1772 | case BUCKET_CMD: |
| 1773 | { |
| 1774 | sBucket_pt b=(sBucket_pt)dd; |
| 1775 | if (d->r!=sBucketGetRing(b)) |
| 1776 | { |
no test coverage detected