[QBS] FileInfo relativePath function
Ruslan Nigmatullin
EuroElessar at yandex.ru
Fri Sep 14 08:37:37 CEST 2012
14.09.2012, 03:04, "Ruslan Nigmatullin" <EuroElessar at yandex.ru>:
> 13.09.2012, 22:35, "Сергей Лопатин" <magist3r at gmail.com>:
>
>> Hi there!
>>
>> I found strange issue in qbs fileinfo module:
>>
>> function relativePath(base, rel)
>> {
>> var basel = base.split('/');
>> var rell = rel.split('/');
>> var i = 0;
>>
>> while (i < basel.length && i < rell.length && basel[i] == rell[i])
>> i++;
>>
>> var j = i;
>> var r = [];
>>
>> for (; i < basel.length; i++) // i really don't understand why we
>> need this line
>> r.push('..');
>>
>> for (; j < rell.length; j++)
>> r.push(rell[j]);
>>
>> return r.join('/');
>> }
>>
>> I get some unexpected results:
>>
>> print(FileInfo.relativePath(".","data/webview/terminator.png"));
>> ../data/webview/terminator.png
>>
>> print(FileInfo.relativePath("data/","data/webview/terminator.png"));
>> ../webview/terminator.png
>>
>> print(FileInfo.relativePath("data","data/webview/terminator.png")); //
>> works fine
>> webview/terminator.png
>>
>> I don't understand why this function returns '../'.I could just delete
>> these lines:
>> for (; i < basel.length; i++)
>> r.push('..');
>>
>> but not sure if it's right and not break anything :)
>>
>> Regards,
>> Sergei.
>
> The issue is that special dirs (".", "..") and unnecessary slashes are not handled correctly, I'm fixing this right now.
>
> May be it should be handled by c++ code? It looks like duplication of QDir's fuctionality
>
> Ruslan
Fix is done, works for provided cases: https://codereview.qt-project.org/34837
More information about the Qbs
mailing list