Provide str_mcunames_signature()

This commit is contained in:
Stefan Rueger
2024-06-19 00:27:26 +01:00
parent 0e4d8fd483
commit b366078e6a
2 changed files with 22 additions and 0 deletions

View File

@@ -1514,6 +1514,7 @@ char *str_nexttok(char *buf, const char *delim, char **next);
const char *str_ccfrq(double f, int n);
int str_levenshtein(const char *str1, const char *str2, int swap, int subst, int add, int del);
size_t str_weighted_damerau_levenshtein(const char *str1, const char *str2);
int str_mcunames_signature(uint8_t *sigs, char *p, size_t n);
int led_set(const PROGRAMMER *pgm, int led);
int led_clr(const PROGRAMMER *pgm, int led);

View File

@@ -1301,3 +1301,24 @@ size_t str_weighted_damerau_levenshtein(const char *s1, const char *s2) {
mmt_free(row2);
return i;
}
// Puts a comma-separated list of matching MCU names into array p with n chars space
int str_mcunames_signature(uint8_t *sigs, char *p, size_t n) {
int matching = 0;
for(size_t i=0; i < sizeof uP_table/sizeof *uP_table; i++) {
if(0 == memcmp(sigs, uP_table[i].sigs, sizeof uP_table->sigs)) {
if(matching && n > 2)
strcpy(p, ", "), n -= 2, p += 2;
size_t len = strlen(uP_table[i].name);
if(n > len) {
strcpy(p, uP_table[i].name);
n -= len; p += len;
}
matching++;
}
}
return matching;
}