Неиспользуемые элементы структуры в массиве regmatch_t не равны -1

Для арки я боялся, что случайно удалил много файлов с плохим фин... | xargs rm -формат команды rf. John1024 спасибо за совет.

Чтобы упростить все (для моего веб-сайта -каталог /srv/http )я запускаю все это в одну строку:

sudo cp /var/lib/mlocate/mlocate.db ~/old.db; sudo updatedb; sudo locate -d ~/old.db /srv/http | sort >~/old.list; sudo locate /srv/http | sort >~/new.list; sudo diff ~/old.list ~/new.list;

Убедитесь, что вы заменили /srv/http интересующим вас каталогом.

и здесь отображаются файлы, которые были изменены. Еще раз спасибо!

1
01.11.2019, 11:24
1 ответ

Если вы хотите, чтобы regexecзаполнил неиспользуемые элементы массива значением -1, вам нужно сначала указать их количество. Замените matchcntна MATCH_CNTв этой строке :

.
if((execret = regexec(&compreg, str, matchcnt, matches, 0)) == 0)

поэтому становится

if((execret = regexec(&compreg, str, MATCH_CNT, matches, 0)) == 0)

(и добавьте отсутствующий intперед compret = -2;), и ваша программа будет работать как положено:

$./549805 "^ROOM\s{1}NAME:\s{1}([[:alpha:]]{6})" "ROOM NAME: BriCol"
Trying to match with extended regex...
Compiling successful.
Regexec successful.
Match 0; Beginning: 0
Match 0; End:       17
Match 1; Beginning: 11
Match 1; End:       17
$

Вам также следует инициализировать errbuffзначением NULL, чтобы избежать вызова free()с неопределенным значением (, когда errbuffникогда не инициализируется ). И пока вы этим занимаетесь, проверьте возвращаемое значение malloc()— выделения могут завершиться ошибкой.

4
27.01.2020, 23:17

Теги

Похожие вопросы