On 1/25/2024 4:14 AM, Ilpo Järvinen wrote: > On Thu, 25 Jan 2024, Maciej Wieczor-Retman wrote: >> + fp = fopen(file_path, "r"); >> + if (!fp) { >> + snprintf(reason, sizeof(reason), "Error in opening %s file\n", filename); >> + ksft_perror(reason); > > Was this the conclusion of the kstf_perror() discussion with Reinette? I > expected a bit different outcome when I stopped following it... > > In any case, it would be nice though if ksft_perror() (or some kselftest.h > function yet to be added with a different name) would accept full printf > interface and just add the errno string into the end of the string so one > would not need to build constructs like this at all. > > It will require a bit of macro trickery into kselftest.h. I don't know how > it should handle the case where somebody just passes a char pointer to it, > not a string literal, but I guess it would just throw an error while > compiling if somebody tries to do that as the macro string literal > concatenation could not build useful/compilable token. > > It would make these prints informative enough to become actually useful > without needed to resort to preparing the string in advance which seems > to be required almost every single case with the current interface. I think this can be accomplished with a new: void ksft_vprint_msg(const char *msg, va_list args) ... but ksft_perror() does conform to perror() and I expect that having one support variable number of arguments while the other does to cause confusion. To support variable number of arguments with errno I'd propose just to use ksft_print_msg() with strerror(errno), errno as the arguments (or even %m that that errno handling within ksft_print_msg() aims to support). This does indeed seem to be the custom in other tests. Reinette