/* connect.c - main */

#include <windows.h>
#include <ras.h>

/*------------------------------------------------------------------------
 *
 *  main - wait for a DUN connection
 *
 *------------------------------------------------------------------------
 */

int main(int argc, char **argv)
{
    
    LPRASCONN   lpRasConn;
    RASCONNSTATUS RasConnStatus;
    DWORD       size, size1;
    DWORD       i, n, time, tmp;
    DWORD       result;

    if (argc == 2)
        time = atoi(argv[1]);
    else
        time = 90;
            
    // Enumerate RAS connections

    size = sizeof(RASCONN)*20;
    tmp = size; 
    lpRasConn = (LPRASCONN) malloc(size);
    lpRasConn->dwSize = sizeof(RASCONN);
    size1 = sizeof(RASCONNSTATUS);
    RasConnStatus.dwSize = size1;

    for (i=0; i<time; i++) {
        result = RasEnumConnections(lpRasConn, &size, &n);
        if (result) {
            printf("ERROR: RasEnumerateConnections failed [%d]\n", result);
            free(lpRasConn);
            return -1;
        }        

        if (n >= 1) {
            result = RasGetConnectStatus(lpRasConn->hrasconn, &RasConnStatus);
            if (result) {
                printf("ERROR: RasGetConnectStatus failed [%d]\n", result);
                free(lpRasConn);
                return -1;
            }        
            if (RasConnStatus.rasconnstate == RASCS_Connected) {            
                printf("\nConnection %s is UP\n", lpRasConn->szEntryName);
                MessageBeep(-1);
                free(lpRasConn);
                return 0;
            }
        }
        Sleep(1000);
        printf(".");
        size = tmp;     // restore size
    }
    MessageBeep(-1);
    Sleep(500);
    MessageBeep(-1);
    Sleep(500);
    MessageBeep(-1);
    free(lpRasConn);
    return 0;
}

