| 180 | |
| 181 | |
| 182 | void luaO_chunkid (char *out, const char *source, size_t bufflen) { |
| 183 | if (*source == '=') { |
| 184 | strncpy(out, source+1, bufflen); /* remove first char */ |
| 185 | out[bufflen-1] = '\0'; /* ensures null termination */ |
| 186 | } |
| 187 | else { /* out = "source", or "...source" */ |
| 188 | if (*source == '@') { |
| 189 | size_t l; |
| 190 | source++; /* skip the `@' */ |
| 191 | bufflen -= sizeof(" '...' "); |
| 192 | l = strlen(source); |
| 193 | strcpy(out, ""); |
| 194 | if (l > bufflen) { |
| 195 | source += (l-bufflen); /* get last part of file name */ |
| 196 | strcat(out, "..."); |
| 197 | } |
| 198 | strcat(out, source); |
| 199 | } |
| 200 | else { /* out = [string "string"] */ |
| 201 | size_t len = strcspn(source, "\n\r"); /* stop at first newline */ |
| 202 | bufflen -= sizeof(" [string \"...\"] "); |
| 203 | if (len > bufflen) len = bufflen; |
| 204 | strcpy(out, "[string \""); |
| 205 | if (source[len] != '\0') { /* must truncate? */ |
| 206 | strncat(out, source, len); |
| 207 | strcat(out, "..."); |
| 208 | } |
| 209 | else |
| 210 | strcat(out, source); |
| 211 | strcat(out, "\"]"); |
| 212 | } |
| 213 | } |
| 214 | } |
no outgoing calls
no test coverage detected