Changeset 790 for trunk/zoo-project/zoo-kernel/service_internal_python.c
- Timestamp:
- Dec 19, 2016, 6:01:06 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/zoo-project/zoo-kernel/service_internal_python.c
r784 r790 356 356 if(pbt!=NULL) 357 357 free(pbt); 358 pbt=(char*)malloc((90+strlen(tpbt)+strlen(PyString_AsString(trace))+1)*sizeof(char)); 359 sprintf(pbt,_("%s\nUnable to run your python process properly. Please check the following messages : %s"),tpbt,PyString_AsString(trace)); 358 char* format=_("%s\nUnable to run your python process properly. Please check the following messages : %s"); 359 pbt=(char*)malloc((strlen(format)+strlen(tpbt)+strlen(PyString_AsString(trace))+1)*sizeof(char)); 360 sprintf(pbt,format,tpbt,PyString_AsString(trace)); 360 361 } 361 362 else{ 362 363 if(pbt!=NULL) 363 364 free(pbt); 364 pbt=(char*)malloc((90+strlen(tpbt)+strlen(PyString_AsString(trace))+1)*sizeof(char)); 365 sprintf(pbt,_("%s \n Unable to run your python process properly. Unable to provide any further information."),tpbt); 365 char* format=_("%s \n Unable to run your python process properly. Unable to provide any further information."); 366 pbt=(char*)malloc((strlen(format)+strlen(tpbt)+strlen(PyString_AsString(trace))+1)*sizeof(char)); 367 sprintf(pbt,format,tpbt); 366 368 } 367 369 free(tpbt); … … 390 392 while(tmp!=NULL){ 391 393 PyObject* value=(PyObject*)PyDict_FromMap(tmp->content); 394 if(tmp->child!=NULL){ 395 PyObject* cname=PyString_FromString("child"); 396 PyObject* childs=(PyObject*)PyDict_FromMaps(tmp->child); 397 if(PyDict_SetItem(value,cname,childs)<0){ 398 fprintf(stderr,"Unable to set map value ..."); 399 return NULL; 400 } 401 Py_DECREF(cname); 402 } 392 403 PyObject* name=PyString_FromString(tmp->name); 393 404 if(PyDict_SetItem(res,name,value)<0){ … … 543 554 PyString_AsString(key),PyString_AsString(value)); 544 555 #endif 545 cursor=(maps*)malloc(MAPS_SIZE); 546 cursor->name=zStrdup(PyString_AsString(key)); 556 cursor=createMaps(PyString_AsString(key)); 547 557 cursor->content=mapFromPyDict((PyDictObject*)value); 558 PyObject* cname=PyString_FromString("child"); 559 PyObject* childs=PyDict_GetItem((PyObject*)value,cname); 560 if(childs!=NULL) 561 cursor->child=mapsFromPyDict((PyDictObject*)childs); 562 Py_DECREF(cname); 548 563 #ifdef DEBUG 549 564 dumpMap(cursor->content); … … 626 641 PyString_AsString(key),PyString_AsString(value)); 627 642 #endif 628 629 if(strncmp(PyString_AsString(key),"value",5)==0){630 631 643 if(strncmp(PyString_AsString(key),"child",5)!=0){ 644 if(strncmp(PyString_AsString(key),"value",5)==0){ 645 char *buffer=NULL; 646 Py_ssize_t size; 632 647 #if PY_MAJOR_VERSION >= 3 633 if(PyBytes_Check(value)){ 634 size=PyBytes_Size(value); 635 buffer=PyBytes_AsString(value); 636 } 637 else 638 if(PyUnicode_Check(value) && PyUnicode_READY(value) == 0){ 639 buffer=PyUnicode_AsUTF8AndSize(value,&size); 648 if(PyBytes_Check(value)){ 649 size=PyBytes_Size(value); 650 buffer=PyBytes_AsString(value); 651 } 652 else 653 if(PyUnicode_Check(value) && PyUnicode_READY(value) == 0){ 654 buffer=PyUnicode_AsUTF8AndSize(value,&size); 655 } 656 else{ 657 #ifdef DEBUG 658 fprintf(stderr,"Unsupported return value."); 659 #endif 660 return NULL; 661 } 662 #else 663 PyString_AsStringAndSize(value,&buffer,&size); 664 #endif 665 res = addToMapWithSize(res,PyString_AsString(key),buffer,size); 666 }else{ 667 char* lkey=PyString_AsString(key); 668 char* lvalue=PyString_AsString(value); 669 if(res!=NULL){ 670 if(PyString_Size(value)>0) 671 addToMap(res,lkey,lvalue); 640 672 } 641 673 else{ 642 #ifdef DEBUG 643 fprintf(stderr,"Unsupported return value."); 644 #endif 645 return NULL; 646 } 647 #else 648 PyString_AsStringAndSize(value,&buffer,&size); 649 #endif 650 res = addToMapWithSize(res,PyString_AsString(key),buffer,size); 651 }else{ 652 char* lkey=PyString_AsString(key); 653 char* lvalue=PyString_AsString(value); 654 if(res!=NULL){ 655 if(PyString_Size(value)>0) 656 addToMap(res,lkey,lvalue); 657 } 658 else{ 659 if(PyString_Size(value)>0) 660 res=createMap(lkey,lvalue); 674 if(PyString_Size(value)>0) 675 res=createMap(lkey,lvalue); 676 } 661 677 } 662 678 }
Note: See TracChangeset
for help on using the changeset viewer.