I'm writing an embedded ftp server, and I cannot get the listing format correctly. The server works completely, only programs like FileZilla cannot interpret the listing format. Here's a sample listing:
-rwxr--r-- 1 owner group 640 1970 01 01 test
-rwxr--r-- 1 owner group 13440 1970 01 01 test.html
-rwxr--r-- 1 owner group 512 1970 01 01 test2.txt
Which is basically:
permissions[tab]number?[tab]owner[tab]group[tab]filesize[tab]date[tab]filename
What am I doing wrong?
Thanks, Yvan
The typical ftp server would shell out to
ls -l
for the directory listing. I believe this output contains space characters which align the output, not tab characters.The only way you can be certain as to why FileZilla is not parsing your directory listing is to get the open source for FileZilla and watch what is happening in the debugger. But I think you can make progress simply by duplicating the output of
ls
as exactly as possible, including whitespace.Since you did not specify the programming language, I thought I would give my 2cents to this....
I have decided to include the C# regexp's below to show, this can be adapted to suit your needs,
Notice the fact, there is no tab, it is purely spaces...and be careful, some FTP clients can read the listing as either MSDOS or Unix...
As others have already mentioned, you need to use spaces instead of tabs. Here's a sprintf from another embedded FTP server that should work:
permstr
is set to a string like"-rw-rw-rw-"
.As for date formats, these two should work, with the top used if the date is more than 6 months old: