503 char *property_value = dav_get_property(res, pname.ptr); |
503 char *property_value = dav_get_property(res, pname.ptr); |
504 free(pname.ptr); |
504 free(pname.ptr); |
505 DavQOp value; |
505 DavQOp value; |
506 value.type = DAVQOP_STRING; |
506 value.type = DAVQOP_STRING; |
507 if(property_value) { |
507 if(property_value) { |
508 printf("put on stack: \"%s\"\n", property_value); |
508 //printf("put on stack: \"%s\"\n", property_value); |
509 value.val = property_value; |
509 value.val = property_value; |
510 value.intval = strlen(property_value); |
510 value.intval = strlen(property_value); |
511 } else { |
511 } else { |
512 printf("put on stack: null string\n"); |
512 //printf("put on stack: null string\n"); |
513 value.val = NULL; |
513 value.val = NULL; |
514 value.intval = 0; |
514 value.intval = 0; |
515 } |
515 } |
516 stack[stackpos++] = value; |
516 stack[stackpos++] = value; |
517 break; |
517 break; |
520 sstr_t name = sstrn(op.val, op.intval); |
520 sstr_t name = sstrn(op.val, op.intval); |
521 DavQOp value; |
521 DavQOp value; |
522 value.type = DAVQOP_INTEGER; |
522 value.type = DAVQOP_INTEGER; |
523 value.val = NULL; |
523 value.val = NULL; |
524 if(!sstrcmp(name, S("contentlength"))) { |
524 if(!sstrcmp(name, S("contentlength"))) { |
525 printf("put contentlength\n"); |
525 //printf("put contentlength\n"); |
526 value.intval = res->contentlength; |
526 value.intval = res->contentlength; |
527 } else if(!sstrcmp(name, S("lastmodified"))) { |
527 } else if(!sstrcmp(name, S("lastmodified"))) { |
528 printf("put getlastmodified\n"); |
528 //printf("put getlastmodified\n"); |
529 value.intval = res->lastmodified; |
529 value.intval = res->lastmodified; |
530 } else if(!sstrcmp(name, S("creationdate"))) { |
530 } else if(!sstrcmp(name, S("creationdate"))) { |
531 value.intval = res->creationdate; |
531 value.intval = res->creationdate; |
532 } else if(!sstrcmp(name, S("name"))) { |
532 } else if(!sstrcmp(name, S("name"))) { |
533 value.type = DAVQOP_STRING; |
533 value.type = DAVQOP_STRING; |
561 res.val = NULL; |
561 res.val = NULL; |
562 res.intval = 0; |
562 res.intval = 0; |
563 switch(op) { |
563 switch(op) { |
564 case 5: { |
564 case 5: { |
565 // < |
565 // < |
566 printf("compare: %" PRId64 " < %" PRId64 "\n", v1, v2); |
566 //printf("compare: %" PRId64 " < %" PRId64 "\n", v1, v2); |
567 res.intval = v1 < v2; |
567 res.intval = v1 < v2; |
568 break; |
568 break; |
569 } |
569 } |
570 case 6: { |
570 case 6: { |
571 // > |
571 // > |
572 printf("compare: %" PRId64 " > %" PRId64 "\n", v1, v2); |
572 //printf("compare: %" PRId64 " > %" PRId64 "\n", v1, v2); |
573 res.intval = v1 > v2; |
573 res.intval = v1 > v2; |
574 break; |
574 break; |
575 } |
575 } |
576 case 7: { |
576 case 7: { |
577 // == |
577 // == |
578 printf("compare: %" PRId64 " == %" PRId64 "\n", v1, v2); |
578 //printf("compare: %" PRId64 " == %" PRId64 "\n", v1, v2); |
579 res.intval = v1 == v2; |
579 res.intval = v1 == v2; |
580 break; |
580 break; |
581 } |
581 } |
582 case 8: { |
582 case 8: { |
583 // != |
583 // != |
584 printf("compare: %" PRId64 " != %" PRId64 "\n", v1, v2); |
584 //printf("compare: %" PRId64 " != %" PRId64 "\n", v1, v2); |
585 res.intval = v1 != v2; |
585 res.intval = v1 != v2; |
586 break; |
586 break; |
587 } |
587 } |
588 case 9: { |
588 case 9: { |
589 // <= |
589 // <= |
590 printf("compare: %" PRId64 " <= %" PRId64 "\n", v1, v2); |
590 //printf("compare: %" PRId64 " <= %" PRId64 "\n", v1, v2); |
591 res.intval = v1 <= v2; |
591 res.intval = v1 <= v2; |
592 break; |
592 break; |
593 } |
593 } |
594 case 10: { |
594 case 10: { |
595 // >= |
595 // >= |
596 printf("compare: %" PRId64 " >= %" PRId64 "\n", v1, v2); |
596 //printf("compare: %" PRId64 " >= %" PRId64 "\n", v1, v2); |
597 res.intval = v1 >= v2; |
597 res.intval = v1 >= v2; |
598 break; |
598 break; |
599 } |
599 } |
600 case 11: { |
600 case 11: { |
601 // and |
601 // and |
602 printf("compare: %" PRId64 " and %" PRId64 "\n", v1, v2); |
602 //printf("compare: %" PRId64 " and %" PRId64 "\n", v1, v2); |
603 res.intval = v1 && v2; |
603 res.intval = v1 && v2; |
604 break; |
604 break; |
605 } |
605 } |
606 case 12: { |
606 case 12: { |
607 // or |
607 // or |
608 printf("compare: %" PRId64 " or %" PRId64 "\n", v1, v2); |
608 //printf("compare: %" PRId64 " or %" PRId64 "\n", v1, v2); |
609 res.intval = v1 || v2; |
609 res.intval = v1 || v2; |
610 break; |
610 break; |
611 } |
611 } |
612 case 13: { |
612 case 13: { |
613 // xor |
613 // xor |
614 printf("compare: %" PRId64 " xor %" PRId64 "\n", v1, v2); |
614 //printf("compare: %" PRId64 " xor %" PRId64 "\n", v1, v2); |
615 res.intval = v1 ^ v2; |
615 res.intval = v1 ^ v2; |
616 break; |
616 break; |
617 } |
617 } |
618 } |
618 } |
619 return res; |
619 return res; |
635 sstr_t s1 = sstrn(v1.val, v1.intval); |
635 sstr_t s1 = sstrn(v1.val, v1.intval); |
636 sstr_t s2 = sstrn(v2.val, v2.intval); |
636 sstr_t s2 = sstrn(v2.val, v2.intval); |
637 switch(op) { |
637 switch(op) { |
638 case 5: { |
638 case 5: { |
639 // < |
639 // < |
640 printf("str compare: %.*s < %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
640 //printf("str compare: %.*s < %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
641 res.intval = s1.length < s2.length; |
641 res.intval = s1.length < s2.length; |
642 break; |
642 break; |
643 } |
643 } |
644 case 6: { |
644 case 6: { |
645 // > |
645 // > |
646 printf("str compare: %.*s > %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
646 //printf("str compare: %.*s > %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
647 res.intval = s1.length > s2.length; |
647 res.intval = s1.length > s2.length; |
648 break; |
648 break; |
649 } |
649 } |
650 case 7: { |
650 case 7: { |
651 // == |
651 // == |
652 printf("str compare: %.*s == %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
652 //printf("str compare: %.*s == %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
653 res.intval = sstrcmp(s1, s2) == 0; |
653 res.intval = sstrcmp(s1, s2) == 0; |
654 break; |
654 break; |
655 } |
655 } |
656 case 8: { |
656 case 8: { |
657 // != |
657 // != |
658 printf("str compare: %.*s != %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
658 //printf("str compare: %.*s != %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
659 res.intval = sstrcmp(s1, s2) != 0; |
659 res.intval = sstrcmp(s1, s2) != 0; |
660 break; |
660 break; |
661 } |
661 } |
662 case 9: { |
662 case 9: { |
663 // <= |
663 // <= |
664 printf("str compare: %.*s <= %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
664 //printf("str compare: %.*s <= %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
665 res.intval = s1.length <= s2.length; |
665 res.intval = s1.length <= s2.length; |
666 break; |
666 break; |
667 } |
667 } |
668 case 10: { |
668 case 10: { |
669 // >= |
669 // >= |
670 printf("str compare: %.*s >= %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
670 //printf("str compare: %.*s >= %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
671 res.intval = s1.length >= s2.length; |
671 res.intval = s1.length >= s2.length; |
672 break; |
672 break; |
673 } |
673 } |
674 case 11: { |
674 case 11: { |
675 // and |
675 // and |
676 printf("str compare: %.*s and %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
676 //printf("str compare: %.*s and %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
677 res.intval = s1.ptr && s2.ptr; |
677 res.intval = s1.ptr && s2.ptr; |
678 break; |
678 break; |
679 } |
679 } |
680 case 12: { |
680 case 12: { |
681 // or |
681 // or |
682 printf("str compare: %.*s or %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
682 //printf("str compare: %.*s or %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
683 res.intval = s1.ptr || s2.ptr; |
683 res.intval = s1.ptr || s2.ptr; |
684 break; |
684 break; |
685 } |
685 } |
686 case 13: { |
686 case 13: { |
687 // xor |
687 // xor |
688 printf("str compare: %.*s xor %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
688 //printf("str compare: %.*s xor %.*s\n", s1.length, s1.ptr, s2.length, s2.ptr); |
689 res.intval = (intptr_t)s1.ptr ^ (intptr_t)s2.ptr; |
689 res.intval = (intptr_t)s1.ptr ^ (intptr_t)s2.ptr; |
690 break; |
690 break; |
691 } |
691 } |
692 } |
692 } |
693 return res; |
693 return res; |