The +1+1 (BTW: please add spaces round operators in the line + offset expression) and -1-1 are clearly "one for the % and one for the =" but I'd sooner just see +2 / -2 and a comment.  If you're going to keep them as separate 1s, they should at least be (line + 1 + strlen(name) + 1, strlen(line + 1 + strlen(name) + 1)), i.e. one 1 is before the strlen, the other is after (as % is before name, = is after).  Of course, I'd rather see a local
```
const char * val = line + 1 + strlen(name) + 1;
```
and then use (val, strlen(val)) here.  Calling strlen(name) twice is wasteful; making strlen(line) scan over the first strlen(name)+2 bytes that we know are non-'\0' is further waste.