/* * like strtok, but smarter */ static char * getinstance(char *p) { static char *save; char quot; char *q; char *start; if (p == NULL) q = save; else q = p; while (hasspace(q)) q++; if (*q == '\0') return NULL; else if (*q == '"' || *q == '\'') { quot = *q; start = ++q; while (*q && *q != quot) q++; if (*q == quot) *q++ = '\0'; } else { start = q; while (*q && !hasspace(q)) q++; } if (*q) *q++ = '\0'; save = q; return start; }
bool abletoUpload(int filesize){ nspAction *nA=NSPAction(); if(nA==NULL){return false;} nsp_node *send = nA->createArray(); nsp_node *param = nA->createArray(); if(send == NULL || param == NULL){NSPActionDelete(nA);return false;} nA->appendString(param,"product.spacecapacity"); nA->appendString(param,"profile.spaceextcapacity"); nA->appendString(param,"profile.usedspacecapacity"); nA->appendString(param,"product.fileuploadsize"); nA->appendArray(send,param); nsp_node *space = NULL; nsp_node *spaceext = NULL; nsp_node *usedspace = NULL; nsp_node *uploadsize = NULL; //send information and receive result and print nsp_node *recv = NSPService("nsp.user.getInfo",*send); if(recv==NULL){goto finish_able;} space = nA->searchNodeByStr(recv,"product.spacecapacity"); spaceext = nA->searchNodeByStr(recv,"profile.spaceextcapacity"); usedspace = nA->searchNodeByStr(recv,"profile.usedspacecapacity"); uploadsize = nA->searchNodeByStr(recv,"product.fileuploadsize"); if(space==NULL || spaceext==NULL || usedspace==NULL || uploadsize==NULL){ nA->deleteNode(recv); goto finish_able; } if(!hasspace(nA->getNodeStringValue(space),nA->getNodeStringValue(spaceext),nA->getNodeStringValue(usedspace),filesize) || atoi(nA->getNodeStringValue(uploadsize))<filesize){ nA->deleteNode(recv); goto finish_able; } //free memory nA->deleteNode(recv); nA->deleteNode(send); NSPActionDelete(nA); return true; finish_able: nA->deleteNode(send); NSPActionDelete(nA); return false; }