/*
   Chaoji Li<lichaoji@gmail>
   Mar 1, 2009 
 */
#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    DWORD dwReturn;
    char *value, *name;
    HKEY k;

    name  = argv[1];
    value = getenv(name);

    if (ERROR_SUCCESS != RegOpenKeyEx(
        HKEY_CURRENT_USER,
        "Environment",
        0,
        KEY_SET_VALUE,
        &k))
    {
        fprintf(stderr,"export: can not open key for write\n");
        exit(1);
    }

    if (value)
    {
        RegSetValueEx(
            k,
            name,
            0,
            REG_SZ,
            (BYTE*)value,
            strlen(value)+1);
    }
    else
    {
        RegDeleteValue(k, name);
    }
    
    RegCloseKey(k);
    SendMessageTimeout(HWND_BROADCAST, 
                       WM_SETTINGCHANGE, 
                       0,
                       (LPARAM) "Environment", 
                       SMTO_ABORTIFHUNG,
                       5000, 
                       &dwReturn);
}
