#pragma once #define CRLF "\r\n" /* * 函数功能:去掉字符串**行首**空白(空格/制表/CR/LF),返回跳过空白后的指针 * 入口参数:s - 待处理串(不搬移内容,只挪返回指针) char* * 返回值:首个非空白字符的指针(全空白则指向结尾 NUL) char* * 限定条件:s 非空且以 NUL 结尾;调用方必须使用返回值,不能继续用原指针 * 函数说明:**只去前导、不去尾部**,2026-10-23 由 lftpd_string_trim 改名为 * lftpd_string_ltrim。原名让调用方以为两头都去,而实现里尾部那条循环 * 起点落在 NUL(isspace('\0') 为假)一次都没执行过 —— 潜伏陷阱。 * 不去尾才是对的:RFC 959 以命令终止符 CRLF 界定命令,参数(PASS 的 * 口令、含空格的文件名)的尾随空格属于参数本体,去掉等于静默改数据; * CRLF 已由 lftpd_inet_read_line 截断,无需此处再处理。 */ char* lftpd_string_ltrim(char* s);