int main()

in src/debugserver/DebugServer.cc [48:117]


int main(int argc, char *argv[]) {
    bool everyone = false;
    for (int i = 1; i < argc; ++i) {
        std::string arg = argv[i];
        if (arg == "--everyone") {
            everyone = true;
        } else if (arg == "-h" || arg == "--help") {
            usage(argv[0], 0);
        } else {
            usage(argv[0], 1);
        }
    }

    SecurityDescriptor sd;
    PSECURITY_ATTRIBUTES psa = nullptr;
    SECURITY_ATTRIBUTES sa = {};
    if (everyone) {
        try {
            sd = createPipeSecurityDescriptorOwnerFullControlEveryoneWrite();
        } catch (const WinptyException &e) {
            fprintf(stderr,
                "error creating security descriptor: %ls\n", e.what());
            exit(1);
        }
        sa.nLength = sizeof(sa);
        sa.lpSecurityDescriptor = sd.get();
        psa = &sa;
    }

    HANDLE serverPipe = CreateNamedPipeW(
        kPipeName,
        /*dwOpenMode=*/PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE,
        /*dwPipeMode=*/PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE |
            rejectRemoteClientsPipeFlag(),
        /*nMaxInstances=*/1,
        /*nOutBufferSize=*/MSG_SIZE,
        /*nInBufferSize=*/MSG_SIZE,
        /*nDefaultTimeOut=*/10 * 1000,
        psa);

    if (serverPipe == INVALID_HANDLE_VALUE) {
        fprintf(stderr, "error: could not create %ls pipe: error %u\n",
            kPipeName, static_cast<unsigned>(GetLastError()));
        exit(1);
    }

    char msgBuffer[MSG_SIZE + 1];

    while (true) {
        if (!ConnectNamedPipe(serverPipe, nullptr)) {
            fprintf(stderr, "error: ConnectNamedPipe failed\n");
            fflush(stderr);
            exit(1);
        }
        DWORD bytesRead = 0;
        if (!ReadFile(serverPipe, msgBuffer, MSG_SIZE, &bytesRead, nullptr)) {
            fprintf(stderr, "error: ReadFile on pipe failed\n");
            fflush(stderr);
            DisconnectNamedPipe(serverPipe);
            continue;
        }
        msgBuffer[bytesRead] = '\n';
        fwrite(msgBuffer, 1, bytesRead + 1, stdout);
        fflush(stdout);

        DWORD bytesWritten = 0;
        WriteFile(serverPipe, "OK", 2, &bytesWritten, nullptr);
        DisconnectNamedPipe(serverPipe);
    }
}