Subject Re: [firebird-support] gbak with servicemanager and filenames with spaces
Author c.tamalun@treesoft.de
Hi,

>I don't think so! For one thing, Linux doesn't allow spaces in pathnames
>at all, whether escaped or not. But, in any case, the Firebird API
>converts backslashes in paths on Linux into slashes. The problem of spaces
>in file paths is going to be encountered on a Windows server.

No, Linux itself can handle spaces in pathnames. You can create directories or files in the console. Both ways, quotes and escapes are allowed. KDE-Tools like konquerer allows this also. I am using for testing purpose some databases below the directory "/public/Treesoft Office" on a Linux Server. The connection works fine from my windows application. I performed my Backups with IBOConsole. In IBOConsole i provided the path of database and the path of backup file as it is, without quotes or escapes. Both containing spaces. Works fine. I run IBOConsole on my Windows Client, so i guess it uses the API like gbak does.

Using an alias in alias.conf works for gbak, but is no good solution for our customers. Usually they install the server with firebird. In a later stage the applications with their databases will be installed from the client PCs. Then they may have no rights to modify or even see the alias.conf in the firebird directory for securituy reasons (security.fdb is in the same directory like aliases.conf).

>>Second problem occurs when i run gbak from Windows API CreateProcess.
>>There is a obviously uninitialized memory, which is used to pass the
>>parameters to the service manager. Thus gbak adds a special character
>>(ASCII-Hex E0 or D0) to the last filename.

>AFAIK, it's not possible to invoke CreateProcess on a remote server. What
>if the remote server were not Windows????

Sorry for being unclear. I understood the concept of client/server. But i am not so familar with the english language.
If i run gbak on my client, gbak starts on the client and uses the service manager via TCP/IP.
If i run gbak with the Windows API CreateProcess, gbak starts also on my client and uses the service manager via TCP/IP. But in this case the parameters are not set properly.
This is reproduceible with MS-VC++6. Open any project. Go to project settings, tab Debug. Enter as executable the path of gbak. Fill in the arguments for backing up a database using service manager.
Execute the project in debug mode (F5). Then the remote backup runs, but the backup file will have an additional character.


Thanks for reading
Christoph


[Non-text portions of this message have been removed]