#include <stdio.h>
#include <string.h>
int setNthValueMax(int index, const char *old_values, const char *new_value, char *result)
{
int i = 0;
const char d = ';';
const char *d1 = 0, *d2 = 0; // delimiters: d1 is for N(index-1) & N(index); d2 is for N(index) & N(index+1)
char *p = result;
for (d1 = old_values; i < index && d1; i++)
if (d1) { // has ending delimiter
if (index) {
strncpy(p
, old_values
, d1
- old_values
+ 1); // 1. copy old value until d1 p += d1 - old_values + 1;
i = index - i;
while (i--)
p
+= sprintf(p
, "%c", d
); // 2. append missing delimiters }
p
+= sprintf(p
, "%s", new_value
); // 3. append new value if (d2)
strcpy(p
, d2
); // 4. append rest old values } else { // has no ending delimiter
p
+= sprintf(p
, "%s", old_values
); // 1. copy whole old vaules i = index - i + 1;
while (i--)
p
+= sprintf(p
, "%c", d
); // 2. append missing delimiters sprintf(p
, "%s", new_value
); // 3. append new value }
return 0;
}
int getNthValueSafe(int index, char *value, char delimit, char *result, int len)
{
int i=0, result_len=0;
char *begin, *end;
if(!value || !result || !len)
return -1;
begin = value;
while(i<index && end){
begin = end+1;
i++;
}
//no delimit
if(!end){
if(i == index){
result_len = (len-1) < (end-begin) ? (len-1) : (end-begin);
}else
return -1;
}else
result_len = (len-1) < (end-begin)? (len-1) : (end-begin);
memcpy(result
, begin
, result_len
); *(result+ result_len ) = '\0';
return 0;
}
char *set_ssid_value_safe(int i, char *old_value, char *nth_value, char *set_value)
{
char *buf[4];
if (getNthValueSafe(i, old_value, ';', nth_value, sizeof(nth_value)) != -1) {
/*if (set_value != "") {
printf("has value\n");
} else {
printf("don't have value\n");
set_value = nth_value;
printf("newnew: %s\n", set_value);
}*/
buf[i] = nth_value;
if (nth_value != NULL) {
if (set_value == "") {
printf("don't have value, old = %s\n", buf
[i
]); //buf[i] = nth_value;
//sprintf(buf, "%s", nth_value);
//printf("buf = %s", buf[i]);
//sprintf(set_value, "%s", buf);
set_value = buf[i];
return set_value;
//sprintf(buf, );
} else
return set_value;
}
}
}
int main(void) {
char *s_radius_server = "1;2;3;4";
char *s_rad_ip[4], *ori[4];
int i;
char buf[100], rec[64];
s_rad_ip[0] = "192.168.1.1";
s_rad_ip[1] = "";
s_rad_ip[2] = "192.168.1.3";
s_rad_ip[3] = "192.168.1.4";
for (i = 0; i < 4; i++) {
#if 0
if (getNthValueSafe(i, s_radius_server, ';', buf, sizeof(buf)) != -1) {
/*if (set_value != "") {
printf("has value\n");
} else {
printf("don't have value\n");
set_value = nth_value;
printf("newnew: %s\n", set_value);
}*/
if (!*s_rad_ip[i]) {
printf("don't have value, old = %s\n", buf
); //s_rad_ip[i] = buf;
//sprintf(buf, "%s", nth_value);
printf("buf = %s", s_rad_ip
[i
]);
//set_value = buf[i];
//return nth_value;//buf[i];
//sprintf(buf, );
} else
s_rad_ip[i] = s_rad_ip[i];
}
#endif
ori[i] = set_ssid_value_safe(i, s_radius_server, buf, s_rad_ip[i]);
//s_rad_ip[i] = ori[i];
}
//s_rad_ip[1] = "5";
for (i = 0; i < 4; i++) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBzZXROdGhWYWx1ZU1heChpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm9sZF92YWx1ZXMsIGNvbnN0IGNoYXIgKm5ld192YWx1ZSwgY2hhciAqcmVzdWx0KQp7CiAgICBpbnQgaSA9IDA7CiAgICBjb25zdCBjaGFyIGQgPSAnOyc7CiAgICBjb25zdCBjaGFyICpkMSA9IDAsICpkMiA9IDA7ICAvLyBkZWxpbWl0ZXJzOiBkMSBpcyBmb3IgTihpbmRleC0xKSAmIE4oaW5kZXgpOyBkMiBpcyBmb3IgTihpbmRleCkgJiBOKGluZGV4KzEpCiAgICBjaGFyICpwID0gcmVzdWx0OwoKICAgIGZvciAoZDEgPSBvbGRfdmFsdWVzOyBpIDwgaW5kZXggJiYgZDE7IGkrKykKICAgICAgICBkMSA9IHN0cmNocihkMSArIDEsIGQpOwoKICAgIGlmIChkMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgZW5kaW5nIGRlbGltaXRlcgogICAgICAgIGQyID0gc3RyY2hyKGQxICsgMSwgZCk7CiAgICAgICAgaWYgKGluZGV4KSB7CiAgICAgICAgICAgIHN0cm5jcHkocCwgb2xkX3ZhbHVlcywgZDEgLSBvbGRfdmFsdWVzICsgMSk7ICAgICAgICAvLyAxLiBjb3B5IG9sZCB2YWx1ZSB1bnRpbCBkMQogICAgICAgICAgICBwICs9IGQxIC0gb2xkX3ZhbHVlcyArIDE7CiAgICAgICAgICAgIGkgPSBpbmRleCAtIGk7CiAgICAgICAgICAgIHdoaWxlIChpLS0pCiAgICAgICAgICAgICAgICBwICs9IHNwcmludGYocCwgIiVjIiwgZCk7ICAgICAgICAgICAgICAgICAgICAgICAvLyAyLiBhcHBlbmQgbWlzc2luZyBkZWxpbWl0ZXJzCiAgICAgICAgfQogICAgICAgIHAgKz0gc3ByaW50ZihwLCAiJXMiLCBuZXdfdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gMy4gYXBwZW5kIG5ldyB2YWx1ZQogICAgICAgIGlmIChkMikKICAgICAgICAgICAgc3RyY3B5KHAsIGQyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQuIGFwcGVuZCByZXN0IG9sZCB2YWx1ZXMKICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm8gZW5kaW5nIGRlbGltaXRlcgogICAgICAgIHAgKz0gc3ByaW50ZihwLCAiJXMiLCBvbGRfdmFsdWVzKTsgICAgICAgICAgICAgICAgICAgICAgLy8gMS4gY29weSB3aG9sZSBvbGQgdmF1bGVzCiAgICAgICAgaSA9IGluZGV4IC0gaSArIDE7CiAgICAgICAgd2hpbGUgKGktLSkKICAgICAgICAgICAgcCArPSBzcHJpbnRmKHAsICIlYyIsIGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIuIGFwcGVuZCBtaXNzaW5nIGRlbGltaXRlcnMKICAgICAgICBzcHJpbnRmKHAsICIlcyIsIG5ld192YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMuIGFwcGVuZCBuZXcgdmFsdWUKICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgZ2V0TnRoVmFsdWVTYWZlKGludCBpbmRleCwgY2hhciAqdmFsdWUsIGNoYXIgZGVsaW1pdCwgY2hhciAqcmVzdWx0LCBpbnQgbGVuKQp7CiAgICBpbnQgaT0wLCByZXN1bHRfbGVuPTA7CiAgICBjaGFyICpiZWdpbiwgKmVuZDsKCiAgICBpZighdmFsdWUgfHwgIXJlc3VsdCB8fCAhbGVuKQogICAgICAgIHJldHVybiAtMTsKCiAgICBiZWdpbiA9IHZhbHVlOwogICAgZW5kID0gc3RyY2hyKGJlZ2luLCBkZWxpbWl0KTsKCiAgICB3aGlsZShpPGluZGV4ICYmIGVuZCl7CiAgICAgICAgYmVnaW4gPSBlbmQrMTsKICAgICAgICBlbmQgPSBzdHJjaHIoYmVnaW4sIGRlbGltaXQpOwogICAgICAgIGkrKzsKICAgIH0KCiAgICAvL25vIGRlbGltaXQKICAgIGlmKCFlbmQpewoJCWlmKGkgPT0gaW5kZXgpewoJCQllbmQgPSBiZWdpbiArIHN0cmxlbihiZWdpbik7CgkJCXJlc3VsdF9sZW4gPSAobGVuLTEpIDwgKGVuZC1iZWdpbikgPyAobGVuLTEpIDogKGVuZC1iZWdpbik7CgkJfWVsc2UKCQkJcmV0dXJuIC0xOwoJfWVsc2UKCQlyZXN1bHRfbGVuID0gKGxlbi0xKSA8IChlbmQtYmVnaW4pPyAobGVuLTEpIDogKGVuZC1iZWdpbik7CgoJbWVtY3B5KHJlc3VsdCwgYmVnaW4sIHJlc3VsdF9sZW4gKTsKCSoocmVzdWx0KyByZXN1bHRfbGVuICkgPSAnXDAnOwoKCXJldHVybiAwOwp9CgpjaGFyICpzZXRfc3NpZF92YWx1ZV9zYWZlKGludCBpLCBjaGFyICpvbGRfdmFsdWUsIGNoYXIgKm50aF92YWx1ZSwgY2hhciAqc2V0X3ZhbHVlKQp7CgljaGFyICpidWZbNF07CgkJaWYgKGdldE50aFZhbHVlU2FmZShpLCBvbGRfdmFsdWUsICc7JywgbnRoX3ZhbHVlLCBzaXplb2YobnRoX3ZhbHVlKSkgIT0gLTEpIHsKCQkJCgkJCS8qaWYgKHNldF92YWx1ZSAhPSAiIikgewoJCQkJcHJpbnRmKCJoYXMgdmFsdWVcbiIpOwoJCQkJCgkJCX0gZWxzZSB7CgkJCQlwcmludGYoImRvbid0IGhhdmUgdmFsdWVcbiIpOwoJCQkJc2V0X3ZhbHVlID0gbnRoX3ZhbHVlOwoJCQkJcHJpbnRmKCJuZXduZXc6ICVzXG4iLCBzZXRfdmFsdWUpOwoJCQl9Ki8KCQkJYnVmW2ldID0gbnRoX3ZhbHVlOwoJCQlpZiAobnRoX3ZhbHVlICE9IE5VTEwpIHsKCQkJCWlmIChzZXRfdmFsdWUgPT0gIiIpIHsKCQkJCQlwcmludGYoImRvbid0IGhhdmUgdmFsdWUsIG9sZCA9ICVzXG4iLCBidWZbaV0pOwoJCQkJCS8vYnVmW2ldID0gbnRoX3ZhbHVlOwoJCQkJCS8vc3ByaW50ZihidWYsICIlcyIsIG50aF92YWx1ZSk7CgkJCQkJLy9wcmludGYoImJ1ZiA9ICVzIiwgYnVmW2ldKTsKCQkJCQkvL3NwcmludGYoc2V0X3ZhbHVlLCAiJXMiLCBidWYpOwoJCQkJCXNldF92YWx1ZSA9IGJ1ZltpXTsKCQkJCQlyZXR1cm4gc2V0X3ZhbHVlOwoJCQkJCS8vc3ByaW50ZihidWYsICk7CgkJCQl9IGVsc2UKCQkJCQlyZXR1cm4gc2V0X3ZhbHVlOwoJCQl9CgkJfQoJCn0KCmludCBtYWluKHZvaWQpIHsKCWNoYXIgKnNfcmFkaXVzX3NlcnZlciA9ICIxOzI7Mzs0IjsKCWNoYXIgKnNfcmFkX2lwWzRdLCAqb3JpWzRdOwoJCglpbnQgaTsKCWNoYXIgYnVmWzEwMF0sIHJlY1s2NF07CgkKCXNfcmFkX2lwWzBdID0gIjE5Mi4xNjguMS4xIjsKCXNfcmFkX2lwWzFdID0gIiI7CglzX3JhZF9pcFsyXSA9ICIxOTIuMTY4LjEuMyI7CglzX3JhZF9pcFszXSA9ICIxOTIuMTY4LjEuNCI7CgkKCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKCQkjaWYgMAoJCWlmIChnZXROdGhWYWx1ZVNhZmUoaSwgc19yYWRpdXNfc2VydmVyLCAnOycsIGJ1Ziwgc2l6ZW9mKGJ1ZikpICE9IC0xKSB7CgkJCS8qaWYgKHNldF92YWx1ZSAhPSAiIikgewoJCQkJcHJpbnRmKCJoYXMgdmFsdWVcbiIpOwoJCQkJCgkJCX0gZWxzZSB7CgkJCQlwcmludGYoImRvbid0IGhhdmUgdmFsdWVcbiIpOwoJCQkJc2V0X3ZhbHVlID0gbnRoX3ZhbHVlOwoJCQkJcHJpbnRmKCJuZXduZXc6ICVzXG4iLCBzZXRfdmFsdWUpOwoJCQl9Ki8KCQkJaWYgKCEqc19yYWRfaXBbaV0pIHsKCQkJCXByaW50ZigiZG9uJ3QgaGF2ZSB2YWx1ZSwgb2xkID0gJXNcbiIsIGJ1Zik7CgkJCQkvL3NfcmFkX2lwW2ldID0gYnVmOwoJCQkJLy9zcHJpbnRmKGJ1ZiwgIiVzIiwgbnRoX3ZhbHVlKTsKCQkJCXNwcmludGYoc19yYWRfaXBbaV0sICIlcyIsIGJ1Zik7CgkJCQlwcmludGYoImJ1ZiA9ICVzIiwgc19yYWRfaXBbaV0pOwoJCQkJCgkJCQkvL3NldF92YWx1ZSA9IGJ1ZltpXTsKCQkJCS8vcmV0dXJuIG50aF92YWx1ZTsvL2J1ZltpXTsKCQkJCS8vc3ByaW50ZihidWYsICk7CgkJCX0gZWxzZQoJCQkJc19yYWRfaXBbaV0gPSBzX3JhZF9pcFtpXTsKCQl9CgkJI2VuZGlmCgoJCQoJCW9yaVtpXSA9IHNldF9zc2lkX3ZhbHVlX3NhZmUoaSwgc19yYWRpdXNfc2VydmVyLCBidWYsIHNfcmFkX2lwW2ldKTsKCQlwcmludGYoIm91dCA9ICVzXG4iLCBvcmlbaV0pOwoJCS8vc19yYWRfaXBbaV0gPSBvcmlbaV07Cgl9CgkvL3NfcmFkX2lwWzFdID0gIjUiOwoJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewoJCXByaW50ZigibmV3ID0gJXNcbiIsIG9yaVtpXSk7Cgl9CglyZXR1cm4gMDsKfQ==