David  1 Jan 2012
    - remote job stuff

    html/
        inc/
            sandbox.inc
        user/
            lammps.php
            submit.php

Rom    1 Jan 2012
    - OPS: Update failure_result_summary_by_platform.php to include
        plan class information.
    - OPS: Update error code translation table

    html/inc
        result.inc
    html/ops
        failure_result_summary_by_platform.php

David  2 Jan 2012
    - ops: fix link in index page

    html/
        ops/
            index.php
        user/
            sandbox.php

Rom    2 Jan 2012
    - VBOX: If VirtualBox reports an error snag both the hypervisor system
        log as well as the VM execution log.  Maybe the hypervisor log
        will tell us what is up with the virtual floppy device.
    - VBOX: Don't retry commands that are expected to fail in normal use
        cases.  It slows down getting the VM up and running.
    - VBOX: After starting the VM, use a timed loop waiting for the initial
        VM state change instead of just waiting for 5 seconds.  Older
        machines can take longer than 5 seconds to switch from poweroff
        to starting.  If we hit the main poll loop in that state the wrapper
        thinks we have crashed.
    - VBOX: Strip carriage returns from all the vboxmanage output on
        Windows.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

David  2 Jan 2012
    - client: compute projects' disk share (based on resource share).
        Report it (along with disk usage) in scheduler request messages.
        This will allow the scheduler to send file-delete commands
        if the project is using more than its share.
    - client: add <disk_usage_debug> log flag
    - create_work: add --help, show --command_line option

    tools/
        create_work.cpp
    html/
        inc/
            util.inc
        user/
            sandbox.php
    lib/
        cc_config.cpp,h
    client/
        client_types.h
        client_state.h
        cs_prefs.cpp
        cs_scheduler.cpp
        cpu_sched.cpp

David  2 Jan 2012
    - upgrade script:
        - prompt user for DB user/passwd if DB updates needed
        - error out immediately if any DB update fails
        Fixes #1169, #1170
    - create_work: check for duplicate <file_info>s in input template
        NOTE: the input template syntax is pretty clunky

    tools/
        process_input_template.cpp
    html/
        ops/
            upgrade_db.php
        inc/
            util_ops.inc

Rom    2 Jan 2012
    - VBOX: Fix crashing issue I introduced last night attempting to
        extract the hypervisor system log.
    - VBOX: Report the hypervisor system log with any failed vboxmanage
        command that happens during the phase where we setup the VM.

    samples/vboxwrapper/
        vbox.cpp, .h

David  3 Jan 2012
    - remote job submission: show input file links
    - ops: fix message: app.min_version applies to HR app versions,
        not client version

    html/
        ops/
            manage_apps.php
        user/
            submit.php
            sandbox.php

David  3 Jan 2012
    - LAMMPS

    html/user/
        lammps.php

David  3 Jan 2012
    - client: calculate disk share for zero-priority projects correctly

    client/
        cs_prefs.cpp

Rom    3 Jan 2012
    - client: Remove scaling factor for AMD OpenCL devices.  Latest
        generation of drivers now report the correct memory size.
        They didn't wait for the next OpenCL spec change.

    client/
        coproc_detect.cpp

Rom    3 Jan 2012
    - VBOX: Per tester feedback, at an hourly status report to track
        network usage.
    - VBOX: For errors where an error code is specified in the output,
        use that value when returning from vbm_open().  Make it easier
        to track failure rates by problem type in the ops pages.
        (Windows Only)
    - VBOX: Try making the process of extracting the hypervisor system
        log more robust, make a temp copy of it in the slot directory.
        Avoid exclusive file lock issues since VboxSvc will still be
        logging to it.
    - VBOX: Change the session lock text to make it clearer that the
        use of other VirtualBox management tools can cause a problem.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

Rom    3 Jan 2012
    - VBOX: Restore the elapsed time from the checkpoint file instead of
        aid.starting_elapsed_time.  It appears some older client versions
        are giving erratic results.
    
    samples/vboxwrapper/
        vboxwrapper.cpp

Rom    4 Jan 2012
    - VBOX: Use strtol instead of atol to parse Vbox error codes from
        stderr/stdout output.
    - VBOX: Undo my reorg yesterday with regards to report_vm_pid and
        report_net_usage.
    - VBOX: Only report network usage in the status report if
        aid.global_prefs.daily_xfer_limit_mb is non-zero
    - VBOX: Add the VM log to the list of things reported on a start
        failure.  Hypervisor log suggests that it launched the VM but
        it failed unexpectedly.  So there might be cases where it
        actually exists.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

Rom    4 Jan 2012
    - VBOX: Move start state change detection code from run() function to
        start() function and use similar code to handle stop as well.
    
        Weird stuff happens when people start/stop BOINC quickly,
        it looks as though the previous VM instance isn't shutdown before we
        attempt to start it again.  Hopefully enough of a wait is in there
        for the VM to fully halt before the wrapper is terminated.
    
    samples/vboxwrapper/
        vbox.cpp

Rom    4 Jan 2012
    - VBOX: Fix a crash bug if multiple virtual NICs are defined for a VM.
        I'm not sure what the heck happened.  It probably has something to
        do with my \r removal code on Windows.  Bugs hidden by other bugs
        I suppose.

    samples/vboxwrapper/
        vbox.cpp

Rom    5 Jan 2012
    - VBOX: Extract the various logs before attempting to cleanup if the
        registration process fails.
    
    samples/vboxwrapper/
        vboxwrapper.cpp

David  5 Jan 2012
    - GUI RPC: use new XML parser

    lib/
        gui_rpc_client_ops.cpp

Charlie 5 Jan 2012
    - client: Restore scaling factor for AMD OpenCL devices on Macs with 
        OpenCL version < 1.2.

    client/
        coproc_detect.cpp

Charlie 6 Jan 2012
    - Mac Installer: Changes for integrated BOINC+VirtualBox Mac installer.

    clientgui/
        mac/
            SetVersion.cpp
    mac_installer/
        Description.plist
        Installer.cpp
        release_boinc.sh

Rom    6 Jan 2012
    - MGR: Remove sash window divider between the task panel and list panel
        in the advanced view. Retain the ability to dynamically adjust the
        width of the task panel based on widest button.
    - LIB: Use parse string instead of copy contents for messages RPC.

    clientgui/
        BOINCBaseView.cpp, .h
        ViewNotices.cpp
        ViewResources.cpp
        ViewStatistics.cpp
    lib/
        gui_rpc_client_ops.cpp

Rom    6 Jan 2012
    - VBOX: Use sscanf instead of strtol to convert a hex string.
    - VBOX: Use new FloppyIO implementation that reports image
        creation errors.

    samples/vboxwrapper/
        floppyio.cpp, .h
        vbox.cpp

David  6 Jan 2012
    - manager: parse message contents with XML_PARSER::element_content().

    lib/
        gui_rpc_client_ops.cpp

David  6 Jan 2012
    - validator: for credit_from_runtime,
        use result.flops_estimate rather than host.p_fpops;
        otherwise it doesn't work for multicore apps.
        TODO: cheat-proofing

    sched/
        validator.cpp
    html/user/
        forum_thread.php

Rom    6 Jan 2012
    - MGR: Derive from the correct base class to make the sizers work
        properly.
    
    clientgui/
        BOINCBaseView.cpp, .h
        ViewNotices.cpp
        ViewResources.cpp

Rom    7 Jan 2012
    - VBOX: Sleep for the remainder of the polling period and not the
        whole poll period.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp, .h

David  7 Jan 2012
    - scheduler: change vbox_mt app plan function to use 1, 2 or 3 CPUs
        depending on how many the host has,
        and whether CPU VM extensions are present
        (this reflects the requirements of CernVM).

    db/
        boinc_db.h
    sched/
        sched_types.h
        sched_customize.cpp
        validator.cpp

Rom    8 Jan 2012
    - VBOX: Fix regression where the ERR_CPU_VM_EXTENSIONS_DISABLED error
        message wasn't being written to stderr when the VM extensions
        were disabled via the BIOS.
    
    samples/vboxwrapper/
        vboxwrapper.cpp

David  8 Jan 2012
    - scheduler: change vbox_mt plan function to use at most 2 cores, not 3
        (CERN doesn't actually need 3)

    sched/
        sched_customize.cpp

David  8 Jan 2012
    - client: reset ACTIVE_TASK::bytes_sent and bytes_received
        when the task is started or restarted

    client/
        app_start.cpp

Charlie 9 Jan 2012
    - client: OpenCL 1.1 has no API for determining available GPU RAM, so if 
        CAL is not present for ATI / AMD GPU or if CUDA is not present for 
        NVIDIA GPU, set available GPU RAM equal to total GPU RAM.

    client/
        coproc_detect.cpp

Rom    9 Jan 2012
    - VBOX: Fix one last regression related to failed start detection.  If
        only one CPU is allocated, manually disable VM hardware acceleration.
    
    samples/vboxwrapper/
        vbox.cpp

David  9 Jan 2012
    - scheduler: the p_fpops value reported by clients can't be trusted.
        Some credit cheats (e.g. with credit_by_runtime) can be done
        by reporting a huge value.
        Fix this by capping the value at 1.1 times the 95th percentile
        of host.p_fpops, taken over active hosts.

    db/
        boinc_db.cpp,h
    sched/
        census.cpp
        sched_types.cpp,h
        sched_shmem.cpp,h
        sched_util.cpp,h
        sched_customize.cpp
        feeder.cpp
        sched_version.cpp
        hr_info.cpp,h

Charlie 10 Jan 2012
    - client: Fix idle detection for Apple Remote Desktop and screen sharing 
        (VNC) under Mac OS 10.7.  See comments in HOST_INFO::users_idle() for 
        details.

    client/
        hostinfo_unix.cpp

David  10 Jan 2012
    - first stab at improving Disk View colors

    clientgui/
        ViewResources.cpp

Charlie 11 Jan 2012
    - Mgr: When launching Mac client as a daemon, allow time for it to start. 

    clientgui/
        BOINCClientManager.cpp

David  11 Jan 2012
    - vboxwrapper: add <pf_host_port> element to config file.
        Specifies host port # for port forwarding.
        If absent or zero, assign a port.

    samples/vboxwrapper
        vbox.cpp,h
        floppyio.cpp,h
        vboxwrapper.cpp

David  11 Jan 2012
    - API: respect direct_process_action even if multi_process is set

    api/
        boinc_api.cpp

David  12 Jan 2012
    - LAMMPS job submission: improve completion estimate

    html/
        inc/
            boinc_db.inc
        user/
            lammps.php

Rom    12 Jan 2012
    - VBOX: Enable remote desktop functionality for a VM that has
        <enable_remotedesktop/> specified in its vbox_job.xml file.
    
      NOTE: It does require the VirtualBox extension pack, but that
        is freely available on the VirtualBox download page.
    
    samples/vboxwrapper
        vbox.cpp, .h
        vboxwrapper.cpp, .h

Rom    12 Jan 2012
    - VBOX: Report the remote desktop connection information to the
        core client.  Next commit will create an extra "VM Console"
        button in the manager when detected.  Volunteers will just have
        to click the button to see what is going on with the VM.

    api/
        boinc_api.cpp, .h
    samples/vboxwrapper
        vbox.cpp, .h
        vboxwrapper.cpp, .h

Rom    12 Jan 2012
    - client: Add plumbing to support passing the remote desktop
        connection information to the manager
    - MGR: Add a "Show VM Console" button for those tasks which
        report a remote desktop port number.

    client/
        app.cpp, .h
        app_control.cpp
    clientgui/
        Events.h
        MainDocument.cpp, .h
        ViewWork.cpp, .h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

Rom    12 Jan 2012
    - VBOX: Make sure the configured port numbers persist across
        restarts of the client software.  Remote desktop stopped
        working if the client software was restarted.

    samples/vboxwrapper
        vboxwrapper.cpp

Charlie 13 Jan 2012
    - client: Due to my changes of 10 Jan 2012, idle detection did not work 
        when BOINC was run as a pre-login daemon.  So use the old method 
        when running as a daemon.  This means that idle detection for Apple 
        Remote Desktop and screen sharing (VNC) under Mac OS 10.7 works only 
        when not running BOINC as a daemon.

    client/
        hostinfo_unix.cpp

Rom    13 Jan 2012
    - VBOX: Cleanup a few messages stating port numbers in the stderr spew.
    - VBOX: Send configuration settings in one message instead of piece meal.

    api/
        boinc_api.cpp, .h
    samples/vboxwrapper
        vboxwrapper.cpp

Rom    13 Jan 2012
    - VBOX: It helps to remove the older send msg routines. Oooops.

    samples/vboxwrapper
        vboxwrapper.cpp

David  13 Jan 2012
    - API: fix queueing problem for graphics-related messages
        (web graphics URL and remote desktop addr)
    - GUI RPC and API:
        change "remote_desktop_connection" to "remote_desktop_addr" everywhere.
        It's an address, not a connection.
    - vboxwrapper: log message cleanup

    api/
        boinc_api.cpp,h
    client/
        app.cpp,h
        app_control.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
        app_ipc.cpp,h
    samples/
        vboxwrapper.cpp

Rom    13 Jan 2012
    - MGR: Add RDP client support for Linux.

    clientgui/
        MainDocument.cpp

David  13 Jan 2012
    - file deleter: improved logging; from Oliver

    sched/
        file_deleter.cpp

Rom    13 Jan 2012
    - MGR: Launch the RDP client on Windows in full-screen mode to avoid
        a bug where the screen doesn't refresh and keyboard/mouse events
        don't manifest until you close down the client and restart it.
    
    clientgui/
        MainDocument.cpp

Charlie 13 Jan 2012
    - MGR: Add RDP client support for the Mac.  I have found no reliable way 
        to pass the IP address and port to Microsoft's Remote Desktop 
        Connection application for the Mac, so I'm using CoRD.  Unfortunately, 
        CoRD does not seem to be as reliable as I would like either.
    
    clientgui/
        MainDocument.cpp

Rom    13 Jan 2012
    NOTE: Some previously experimental features in the client software are
      now important to have for the 7.0 release.  The existing 7.0 branch
      will no longer be maintained, we'll create a new branch for the 7.0
      client line at a later date.

    - Tag for 7.0.8 release, all platforms
      boinc_core_release_7_0_8

    /
        configure.ac
        version.h

David  13 Jan 2012
    - The zip library was moved to a directory (project_depends)
        outside of BOINC, but the build files weren't made to work.
        Move the library back where it was before.

    configure.ac
    Makefile.am
    zip/*

David  13 Jan 2012
    - GUI RPC: add <xml> tag to the start of HTTP replies.

    client/
        gui_rpc_server_ops.cpp

David  14 Jan 2012
    - client: identify ATI 97x0 GPUs (from Jord)

    client/
        coproc_detect.cpp

David  14 Jan 2012
    - GUI RPC client: don't write spurious messages to stderr

    lib/
        gui_rpc_client_ops.cpp

Rom    14 Jan 2012
    - VBOX: Fix regression where the vm_name wasn't reset back to the
        current wu name after deregistering a stale VM.

    samples/vboxwrapper
        vbox.cpp, .h
        vboxwrapper.cpp

Rom    15 Jan 2012
    - VBOX: Add User ID and Host ID to the CERN data format.

    samples/vboxwrapper
        vboxwrapper.cpp

Rom    15 Jan 2012
    - MGR: Use rdesktop-vrdp on Linux, it is included with VirtualBox
        and meant for what we are trying to do.
    - MGR: Remove the fullscreen flag on Windows.  It might only be
        my machine which has refresh problems when launching in
        windowed mode.
    
    clientgui/
        MainDocument.cpp

David  15 Jan 2012
    - optimize strip_whitespace(); from Steffen Moller
    - storage simulator: generalize so you can use different
        coding parameters at different levels

    lib/
        str_util.cpp
    ssim/
        ssim.cpp

David  15 Jan 2012
    - storage simulator: compute fault tolerance correctly

    ssim/
        ssim.cpp

Charlie 16 Jan 2012
    - client, lib: Improve available GPU RAM detection, include it in 
        display of GPU description.
    
    client/
        coproc_detect.cpp
    lib/
        coproc.cpp,.h

Charlie 16 Jan 2012
    - client: Add logging message for insufficient GPU RAM details to 
        coproc_debug flag.

    client/
        cpu_sched.cpp

Rom    16 Jan 2012
    - Tag for 7.0.9 release, all platforms
      boinc_core_release_7_0_9

    /
        configure.ac
        version.h

Charlie 17 Jan 2012
    - Mac: In permissions error alert: show branded name; if permissions 
        error is in a subdirectory, show path to bad file or subdirectory.

    client/
        check_security.cpp
        sandbox.h
    clientgui/
        BOINCGUIApp.cpp
    mac_installer/
        PosInstall.cpp

Charlie 17 Jan 2012
    - client: Save all CUDA and CAL GPU info until done with OpenCL detection 
        so we have available GPU RAM for all OpenCL GPU descriptions.
    
    client/
        coproc_detect.cpp

Charlie 17 Jan 2012
    - Tag for 7.0.10 release, all platforms
      boinc_core_release_7_0_10

    /
        configure.ac
        version.h

Rom    17 Jan 2012
    - VBOX: Fix a regression I introduced on Saturday, is_vm_registered shouldn't
        be called when vm_name is empty.  Change it so that is references
        vm_master_name instead to get the correct name of the VM.
    - VBOX: Fix the logic that scan for the CR character and removes it.  Also fix
        the partial line inclusion when the various log files are greater than 16k.
        string.erase returns what the iterator value should be.
 
     samples/vboxwrapper
        vbox.cpp

David  17 Jan 2012
    - storage simulator work
    - lib: recent checkin broke strip_whitespace(string&).

    ssim/
        ssim.cpp
        plot
        ssim.php
    lib/
        str_util.cpp

David  18 Jan 2012
    - web: link between LAMMPS job submission page and file sandbox page

    html/user/
        lammps.php
        sandbox.php

Charlie 18 Jan 2012
    - client: add debugging aids to coproc_detect logic.
    
    client/
        coproc_detect.cpp

Charlie 18 Jan 2012
    - Tag for 7.0.11 release, all platforms
      boinc_core_release_7_0_11

    /
        configure.ac
        version.h

Charlie 18 Jan 2012
    - client: ATI available RAM is in bytes, not MB; if no CAL, don't divide 
        OpenCL global_mem_size by MEGA to fill in ATI available RAM.
        (Checked in to 7.0.11 tag.)
    
    client/
        coproc_detect.cpp

Rom    18 Jan 2012
    - VBOX: Fix another issue that was a result of Saturdays commit.  Make
        sure that the vm_name variable is populated with something useful if
        resuming from a previous execution of the wrapper.
 
     samples/vboxwrapper
        vbox.cpp

David  18 Jan 2012
    - WAP interface to credit info: return correct timestamp,
        and don't bother with caching.

    html/
        inc/
            wap.inc
        user/
            userw.php

Rom    18 Jan 2012
    - VBOX: Use the documented way to reset the UUID of a virtual hard
        disk.  Thanks Daniel.
    
     samples/vboxwrapper
        vbox.cpp

David  18 Jan 2012
    - Manager: in project web links, use "Home Page" instead of the
        project name (which could be very long)

    clientgui/
        BOINCBaseView.cpp

David  19 Jan 2012
    - client: parse HOST_INFO::p_vm_extensions_disabled correctly

    lib/
        hostinfo.cpp
        proxy_info.cpp
        gui_rpc_client_ops.cpp
        coproc.cpp
    version.h
    ssim/
        ssim.php

Charlie 19 Jan 2012
    - Mac installer: If installing under OS 10.4, create users and groups 
        boinc_master and boinc_project at first available UserIDs and 
        GroupIDs starting at 25 instead of 501 to prevent problems with 
        Accounts pane of System Preferences.

    clientgui/
        mac/
            SetupSecurity.cpp

David  19 Jan 2012
    - storage simulator work

    ssim/
        ssim.cpp
        ssim.php

Charlie 20 Jan 2012
    - client: Show GPU number in "GPU is OpenCL-capable" message.

    client/
        client_state.cpp

Charlie 20 Jan 2012
    - OpenCL: 
        Problem: Mac OpenCL does not recognize all NVIDIA GPUs returned 
        by CUDA.  Since there is no CAL for Mac, this is not an issue 
        for ATI / AMD GPUs.  On other platforms, the CUDA and CAL drivers 
        also provide OpenCL support, so we don't expect the problem there.
    
        Solution: I believe that CUDA and OpenCL return identical GPU 
        model names for the same GPU, and that both return the GPUs in the 
        same order (but with some possibly omitted from the OpenCL sequence.)
        We use that information to correlate the OpenCL data with CUDA data. 
        We use our internal CUDA device_num for the corresponding OpenCL 
        device, but add a new field opencl_device_index; the two fields are 
        equal unless we have CUDA devices not recognized by OpenCL.  We 
        add a new array opencl_device_indexes[] to the COPROC struct, 
        corresponding to the entries in device_nums[].
    
        The init_data.xml file now has a new field gpu_opencl_device_index.  
        If this field exists, the boinc_get_opencl_ids() API uses this to 
        find the cl_device_id and cl_platform_id, otherwise it continues 
        to use the value in gpu_device_num.
    
    api/
        boinc_opencl.cpp
    client/
        app_start.cpp
        coproc_detect.cpp
    lib/
        app_ipc.cpp,.h
        coproc.h

David  20 Jan 2012
    - volunteer data archival stuff

    ssim/
        vda.cpp,h (new)
        ssim.cpp
        makefile

David  20 Jan 2012
    - client: add a mechanism for restartable download of compressed files.
        (It turns out that the compression schemes supported by
        Apache and libcurl, suprisingly, aren't restartable.)

        if a <file_info> from the server contains <gzipped_url> tags,
        use those instead of the <url> tags,
        and flag the file as "download_gzipped".
        If this is the case, download NAME.gz and save it as NAME.gzt.
        When the download is complete, rename NAME.gzt to NAME.gz,
        and uncompress it to NAME.
        (this ensures that if NAME.gz is present, it's complete).
        Also do the uncompression, if needed, in verify_file().
        This ensures that the uncompression will eventually get done
        even if the client quits are crashes in the middle.

    - update_versions: if <gzip> is present in a <file_info>,
        add a gzipped copy in the download directory
        and add a <gzipped_url> elements to the app version's xml_doc.

    client/
        client_types.cpp,h
        file_xfer.cpp
        cs_files.cpp
    tools/
        update_versions

David  20 Jan 2012
    - feeder: if we're rereading the DB because of trigger file,
        do PERF_INFO::get_from_db() also.
        From Teemu Mannermaa.

    sched/
        feeder.cpp

David  20 Jan 2012
    - admin web: if change app or app version params,
        advise user to stop/restart the project

    html/ops/
        manage_apps.php
        manage_app_versions.php

Rom    21 Jan 2012
    - VBOX: Enable the wrapper to handle fractional CPU usage.  If
        the server specifies 1.1 CPUs used, allocate 2 CPUs to be used
        in VirtualBox.
    
    samples/vboxwrapper
        vboxwrapper.cpp

Rom    21 Jan 2012
    - sched: adjust the vbox??_mt plan classes to use 1.5 CPUs instead
        of the full 2 CPUs. Vboxwrapper uses ceil() to allocate enough
        whole CPUs for Virtualbox.  Ideally this will cause the BOINC
        client-side scheduler to use the remaining fraction of the CPU
        for GPU data transfer which will then free up one whole CPU for
        another job.  All without over-commiting anything.
    
    sched/
        sched_customize.cpp

David  22 Jan 2012
    - GUI RPC: switching to the new XML parser
        (which won't parse a double as an int)
        revealed a type mismatch in FILE_TRANSFER::next_request_time
        between client and server.

    db/
        boinc_db.cpp,h
        schema_vda.sql (new)
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
    ssim/
        vda.cpp
        vda_lib.cpp,h
        vda_transitioner.cpp
        makefile
    client/
        net_stats.cpp

David  22 Jan 2012
    - client: fix divide-by-zero bug in calculation of priority
        of projects with zero resource share

    client/
        cpu_sched.cpp

Rom    23 Jan 2012
    - MGR: Tweak the z-order of BOINC Manager owned windows a little bit.
        Image a case where BOINC Manager and the BOINC Manager event log
        live side-by-side or only slightly overlapped, and the user wants
        to use a full screen/maximized window.  If the bring the BOINC
        manager window back into focus while that app is still running
        make sure the event log comes forward as well.  The event log
        should appear behind the main window in the case they are
        overlapped.
    
    clientgui/
        BOINCGUIApp.cpp, .h

Rom    23 Jan 2012
    - client - Remove Mac OSX 10.3.9 hack, it is no longer needed.

    client/
        http_curl.cpp

David  23 Jan 2012
    - scheduler: initialize COPROC_ATI::version to zero;
        avoid sending spurious "update driver" messages

    lib/
        coproc.cpp
    db/
        boinc_db.cpp,h
        schema_vda.sql
    vda/
        vdad.cpp
        makefile

Charlie 23 Jan 2012
    - Mac: If permissions error because unable to opendir() a subdirectory, 
        show path to that subdirectory.

    client/
        check_security.cpp

Rom    23 Jan 2012
    - VBOX: Demote the priority level of the VM process to try and prevent
        latency issues for volunteers.
    - VBOX: If the port forwarding preferred port isn't usable, try asking
        the OS for one.
    - VBOX: On a failure, get the VM process exit code and report it with
        the rest of the stderr spew.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

David  23 Jan 2012
    - web: use et_n instead of pfc_n for #jobs completed
        in host app details page
        (pfc_n is not populated for hosts running old clients)

    html/user/
        host_app_versions.php

Rom    24 Jan 2012
    - client: treat the gzt file extension like we do for the gz file extension.
        Disable libcurls ability to decompress on-the-fly and let the CC decompress
        it after it has been fully downloaded.
    
    client/
        http_curl.cpp

David  24 Jan 2012
    - client: when deleting a file, check for .gzt and .gz variants as well

    client/
        client_types.cpp

David  24 Jan 2012
    - client: bug fixes in gzipped download code

    client/
        client_types.cpp
        cs_files.cpp

Rom    24 Jan 2012
    - client: undo my previous commit.  We request .gz from the server and write
        the contents to a .gzt file.
 
    client/
        http_curl.cpp

Rom    24 Jan 2012
    - VBOX: Fix build breaks for Linux and Mac.

    samples/vboxwrapper/
        vbox.cpp

Rom    24 Jan 2012
    - client: Fix long standing issue with the .gz extension automatically being
        decompressed on-the-fly when it wasn't supposed to be.

    client/
        http_curl.cpp

David  24 Jan 2012
    - volunteer storage
    client/
        client_types.h
    vda/
        vdad.cpp

Charlie 25 Jan 2012
    - VBOX: Fix compiler warnings on Mac.

    samples/vboxwrapper/
        vboxwrapper.cpp

Charlie 25 Jan 2012
    - MGR: Make the task pane in the advanced view and its buttons fixed sizes; 
        ellipse the button contents if needed; show full button text plus 
        description in button tooltips; don't set button labels if unchanged.

    clientgui/
        BOINCBaseView.cpp, .h
        BOINCTaskCtrl.cpp, .h
        stdwx.h

David  26 Jan 2012
    - update_versions: for gzipped files,
        send the size of the compressed file as well.
    - client: parse and write the compressed size (FILE_INFO::gzipped_nbytes).
        For get_transfer GUI RPCs, if it's a compressed download send
        the compressed size.
        That way the manager will show the fraction done correctly.

    tools/
        update_versions
    lib/
        gui_rpc_client.h
    vda/
        vdad.cpp
    client/
        client_types.cpp,h
        acct_setup.cpp

Charlie 26 Jan 2012
    - client: disable temporary debugging aids in coproc_detect logic.
    
    client/
        coproc_detect.cpp

David  26 Jan 2012
    - client: fix write of gzipped_nbytes

    client/
        client_types.cpp

Rom    26 Jan 2012
    - Tag for 7.0.12 release, all platforms
      boinc_core_release_7_0_12

    /
        configure.ac
        version.h

David  26 Jan 2012
    - client: after a gzipped file is downloaded,
        we uncompress it and then verify it.
        The latter involves computing its MD5, which reads the entire file.
        Combine these 2 steps so that the MD5 is computed
        as the file is uncompressed,
        eliminating the need to read the file again.

    lib/
        crypt.cpp,h
        crypt_prog.cpp
    client/
        client_types.cpp,h
        cs_files.cpp

Charlie 26 Jan 2012
    - Mac: Update the build instructions with the current URL for c-ares-1.7.4.

    mac_build/
        HowToBuildBOINC_XCode.rtf

Charlie 27 Jan 2012
    - MGR: If CPU or GPU is suspended from Activity Menu, change "Snooze" items 
        to "Resume" in system tray menu.
    - client: Always remember previous CPU and GPU activity settings.

    client/
        client_types.cpp,h
        cs_statefile.cpp
    clientgui/
        BOINCTaskBar.cpp,.h
        mac/
            MacSysMenu.cpp

David  27 Jan 2012
    - manager: in Disk View, try to make colors more distinct.
        In addition to varying the hue,
        cycle through 3 different luminance values (.5, .7, .9)
    - web: update the wording of buffer-size preferences

    clientgui/
        ViewResources.cpp
    html/inc/
        prefs.inc

David  27 Jan 2012
    - manager: in tooltips for Project/Task buttons,
        don't prepend "button name: ";
        add a tooltip for Home Page button.

    clientgui/
        BOINCBaseView.cpp
        BOINCTaskCtrl.cpp

Charlie 27 Jan 2012
    - MGR: Disable new "Resume" items in system tray menu if modal dialog is open.

    clientgui/
        BOINCTaskBar.cpp

David  28 Jan 2012
    - web: msg tweak
    - screensaver coordinator: use new XML parser

    clientscr/
        screensaver.cpp
    html/user/
        forum_report_post.php

Charlie 30 Jan 2012
    - client: because available GPU RAM value is unreliable, don't defer 
        scheduling a task based on insufficient GPU RAM.  For now, the 
        relevant code is guarded by a "#define DEFER_ON_GPU_AVAIL_RAM 0" 
        so we can easily restore it if we find a reliable way to get the 
        value of available GPU RAM periodically. 
    
        NOTE: we are still sending this unreliable value to project 
        servers in the sched_request file.  Does it make sense to do so?
    
    client/
        cpu_sched.cpp
    lib/
        coproc.h

David  30 Jan 2012
    - manager: change text for buffer-size fields in advanced prefs dialog

    clientgui/
        DlgAdvPreferencesBase.cpp

David  30 Jan 2012
    - server: revamp the "assigned job" mechanism.
        This now supports two main use cases:
        1) there's a job that you want to run once on all hosts,
            present and future
            (or all hosts belonging to a user, or to a team).
            The job is never transitioned, validated, or assimilated.
        2) There's a normal job for which you want to use only
            hosts belonging to a specific user (e.g. cluster or cloud hosts).
            This restriction can be made either when the job is created,
            or on the fly,
            e.g. as part of a scheme for accelerating batch completion.
            For the latter purposes we now provide a function
                restrict_wu_to_user(DB_WORKUNIT&, int userid);

            The job goes through the standard
            transitioner/validator/assimilator path.

        These cases are enabled by config flags
            <enable_assignment_multi/>
            <enable_assignment/>
        respectively.

        Assignment of type 2) are no longer stored in shared mem,
        so there is no limit on their number.

        There is no longer a rule that assigned job names must contain "asgn".

        NOTE: this requires a database update.

    db/
        boinc_db.cpp,h
        constraints.sql
        schema.sql
    sched/
        sched_util.cpp,h
        sched_shmem.cpp
        transitioner.cpp
        sched_assign.cpp
    tools/
        backend_lib.cpp
        create_work.cpp
    html/ops/
        db_update.php
    lib/
        common_defs.h

David  30 Jan 2012
    - admin web: improvements to the pages for investigating result failures
        (though considerable funkiness remains)

    html/
        ops/
            failure_result_summary_by_platform.php
            failure_result_summary_by_host.php
            index.php
            pass_percentage_by_platform.php
        inc/
            db_ops.inc

David  31 Jan 2012
    - admin web: fixes and clarifications to failure summaries

    html/
        ops/
            failure_result_summary_by_platform.php
            failure_result_summary_by_host.php
            index.php
            pass_percentage_by_platform.php
        inc/
            boinc_db.inc
            db_ops.inc
        user/
            apps.php

David  31 Jan 2012
    - create_work tool: change option names for assigned jobs
    - admin web: show actual platform name in result summary page

    tools/
        create_work.cpp
    html/ops/
        pass_percentage_by_platform.php

David  31 Jan 2012
    - web: fix the user search feature
    - scheduler: parse d_project_share
    - scheduler: if vbox and vbox_mt are both available,
        use vbox for a 1-CPU machine

    db/
        boinc_db.h
    sched/
        sched_customize.cpp
        sched_types.cpp
    html/user/
        user_search.php

David  1 Feb 2012
    - scheduler: add log messages to show VM-related request items
    - fix typos in db_update script

    sched/
        sched_send.cpp
    html/ops/
        db_update.php

Charlie 2 Feb 2012
    - Tag for 7.0.13 release, all platforms
      boinc_core_release_7_0_13

    /
        configure.ac
        version.h

David  2 Feb 2012
    - client: fix job scheduler problem:
        old: RR simulation marks some jobs as missing their deadline,
            and the job scheduler runs those jobs as "high priority".
        problem: those generally aren't the ones we should run.
            E.g. if the client has a lot of jobs from a project,
            typically the ones with later deadlines are the ones
            whose deadlines are missed in the simulation.
            But in this case the EDF policy says we should run
            the ones with earliest deadlines.
        new: if a project has N deadline misses,
            run its N earliest-deadline jobs,
            regardless of whether they missed their deadline in the sim.
        Note: this is how it used to be (as designed by John McLeod).
            I attempted to improve it, and got it wrong.

    client/
        cpu_sched.cpp

Rom    2 Feb 2012
    - MGR: Fix cookie detection problem when using the
        IEGetProtectedModeCookie API.  Function prototype changed from the
        InternetGetCookieEx function.  HRESULT != BOOL.
    
    clientgui/
        browser.cpp

Rom    2 Feb 2012
    - Tag for 7.0.14 release, all platforms
      boinc_core_release_7_0_14

    /
        configure.ac
        version.h

David  3 Feb 2012
    - client: first pass at async file copy feature.
        When a large file is copied from a project dir to a slot dir,
        it's copied in chunks,
        interleaved with other polling activities such as GUI RPCs.
        That way the manager doesn't freeze while large copies
        (e.g. VM images) are happening

    client/
        async_file.cpp,h (new)
        client_types.h
        client_state.cpp
        app.cpp,h
        app_start.cpp
        Makefile.am

Rom    3 Feb 2012
    - client: add async file copy stuff to Windows project file.

    client/
        async_file.cpp
    win_build/
        boinc_cli.vcproj

David  3 Feb 2012
    - client: debug async file copy.  Seems to be working.

    client/
        app.cpp
        app_start.cpp
        async_file.cpp
    lib/
        common_defs.h

Charlie 3 Feb 2012
    - client: add async file copy stuff to Xcode project.

     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  3 Feb 2012
    - transitioner: fix bug that cause invalid SQL query

    db/
        boinc_db.cpp

Charlie 3 Feb 2012
    - SCR: Fix Xcode editor problems from recent screensaver.cpp changes.

    clientscr/
        screensaver.cpp

David  5 Feb 2012
    - client: intermediate checkin for async file verification

    lib/
        crypt.cpp,h
        crypt_prog.cpp
    client/
        client_types.cpp,h
        async_file.cpp,h
        pers_file_xfer.cpp
        cs_apps.cpp
        cs_scheduler.cpp
        acct_mgr.cpp
        cs_files.cpp

Charlie 6 Feb 2012
    - client: Fix compiler warning generated by above checkin.

    client/
        pers_file_xfer.cpp

Rom    6 Feb 2012
    - client: Undo my change of 24 Jan 2012 which broke WCG's use of the
        .gzb file extension.  I was wrong in how I read the conditional and
        it turns out that libcurl does not attempt to honor the content-encoding
        if it was disabled as part of the request. My bad.
    
    client/
        http_curl.cpp

David  6 Feb 2012
    - client: tweaks to AMD GPU detection msgs
    - client: async file stuff

    client/
        async_file.cpp
        coproc_detect.cpp
        cs_files.cpp

David  6 Feb 2012
    - client: async file stuff

    client/
        async_file.cpp,h
        cs_files.cpp
    lib/
        crypt.cpp,h
        crypt_prog.cpp

David  6 Feb 2012
    - client: async file stuff

    client/
        client_types.cpp,h
        app_start.cpp
        async_file.cpp
        cs_files.cpp

David  6 Feb 2012
    - client: async file stuff.
        async decompress/verify seems to be working

    client/
        async_file.cpp,h
        gui_http.cpp

Charlie 6 Feb 2012
    - client: remove "GPU n is OpenCL-capable" messages.  They were 
        redundant with new OPENCL_DEVICE_PROP::description() and were 
        confusing because they only listed the "best" CUDA / CAL GPUs.
    
    client/
        client_state.cpp

David  7 Feb 2012
    - client: HTTP range request errors are permanent.

    client/
        http_curl.cpp,h
        pers_file_xfer.cpp
        file_xfer.cpp
    lib/
        gui_rpc_client_ops.cpp
        error_numbers.h
        str_util.cpp
    html/ops/
        bolt_refresh.php

David  7 Feb 2012
    - async file stuff.  mostly working.  still a few bugs

    client/
        cs_apps.cpp
        http_curl.cpp
    clientgui/
        AccountManagerPropertiesPage.cpp
        ProjectPropertiesPage.cpp
    lib/
        str_util.h

David  7 Feb 2012
    - client: async file stuff
        - set threshold at 10 MB for doing things asynchronously
        - don't count VERIFY_PENDING as failure

    client/
        async_file.h
        client_state.cpp
        client_types.cpp,h
        cs_apps.cpp

Charlie 7 Feb 2012
    - client: Fix bug in setting opencl_device_index.

    client/
        coproc_detect.cpp

David  7 Feb 2012
    - client/Manager/GUI RPC: clean up RPC stuff involving
        resource-specific backoff and exclusion

        Old: client writes
                <rsc_backoff_time>
                <rsc_backoff_interval>
                <no_rsc_ams>
                <no_rsc_apps>
                <no_rsc_pref>
            in GUI RPC entries for projects.
            Manager (GUI RPC client): PROJECT struct has
                cpu_backoff_time
                cpu_backoff_interval
                ... cuda, ati
                no_cpu_pref
                ... cuda, ati
            and it parses tags of these names.
            In other words, no information is being conveyed
            from client to Manager.

        New:
            manager parses both forms

    clientgui/
        DlgItemProperties.cpp
        lib/
            gui_rpc_client_ops.cpp
            gui_rpc_client.h

David  8 Feb 2012
    - client: fix bug in async file verify.
        File verify is done in 4 places:
        - after a download finishes
        - transition result to DOWNLOADED
        - if project->verify_files_on_app_start, on app start
        Use asynchrony only in the first 2 cases,
        since the async logic is set up to mark the file as PRESENT
        when done, not to restart a task

    client/
        client_types.h
        app_start.cpp
        pers_file_xfer.cpp
        cs_apps.cpp
        cs_files.cpp

Rom    8 Feb 2012
    - VBOX: Remove the renaming of the vm disk image code. It isn't needed
        and it complicates things in the CC.
    
    samples/vboxwrapper/
        vboxwrapper.cpp

David  8 Feb 2012
    - client: bug fix for async file ops:
        set up files in slot dir when starting an app,
        whether or not it's the first time

    client/
        app.h
        app_control.cpp
        app_start.cpp
        async_file.cpp,h

David  8 Feb 2012
    - client: on startup, check file size as well as existence
    - client: add <async_file_debug> log flag
    - client: do decompress (both sync and async) to a temp file,
        then rename
    - client: if a file's status is VERIFY_PENDING on startup,
        set it to NOT_PRESENT; that will trigger a verify
    - client: do async copy only if size is above threshold

    lib/
        cc_config.cpp,h
    client/
        client_state.cpp
        async_file.cpp,h
        sim.cpp
        app_start.cpp
        client_types.cpp
        cs_files.cpp

David  8 Feb 2012
    - client: fixed a bug in procinfo_app() that would cause processes
        to be treated as non-BOINC when they actually are,
        thus falsely triggering CPU-busy suspensions

    lib/
        procinfo.cpp

David  9 Feb 2012
    - client: only check file size if the FILE_INFO specifies it.

    client/
        cs_files.cpp

David  9 Feb 2012
    - scheduler: don't send "update GPU driver" messages if
        the client didn't report a driver version #

    sched/
        sched_customize.cpp
        file_upload_handler.cpp

Rom    9 Feb 2012
    - Tag for 7.0.15 release, all platforms
      boinc_core_release_7_0_15

    /
        configure.ac
        version.h

David  9 Feb 2012
    - client (Unix): don't print misleading "task exited with no finish file"
        message if task actually called boinc_temporary_exit().

    client/
        app_start.cpp
        app_control.cpp

David  9 Feb 2012
    - storage stuff

    vda/
        vdad.cpp
        vdad_lib.cpp,h
        ssim.cpp
        makefile

Charlie 10 Feb 2012
    - client: If OpenCL but no CAL or no CUDA, copy GPU model name from OpenCL so 
        it will apppear in the host table's serialnum attributes (requested by 
        Oliver Bock.)

    client/
        coproc_detect.cpp

Charlie 11 Feb 2012
    - MGR: Fix a bug which pushed modal dialogs (Attach Wizard) to rear when 
        Manager process was brought to front from behind (Mac only.)  This 
        bug was probably introduced in Z-order tweak of 23 Jan 2012.

    clientgui/
        BOINCGUIApp.cpp

David  12 Feb 2012
    - client: zero PROJECT::last_upload_start on reset,
        so that we can fetch work immediately
    - client: in PERS_FILE_XFER::create_xfer(),
        check for already-existing file before seeing we're allowed to start a new xfer
    - client: in PERS_FILE_XFER::create_xfer(),
        if an async verify is in progress, mark PERS_FILE_XFER as done.

    client/
        client_state.cpp
        log_flags.cpp
        pers_file_xfer.cpp

David  12 Feb 2012
    - storage stuff
    - client: message tweak

    lib/
        crypt_prog.cpp
        susp.cpp (deleted)
    vda/
        vda_lib2.cpp (new)
        vda_lib.h
        ssim.cpp
        makefile
    client/
        cpu_sched.cpp

Charlie 13 Feb 2012
    - MGR: Fix bad <organization_help_url> in Progress Through Processor's 
        skin files provided by Matt Blumberg on 9 December 2011.

    clientgui/skins/Progress Thru Processors/
        skin.xml

Charlie 13 Feb 2012
    - client: Try to fix incorrect NVIDIA device number in OpenCL descriptions. 

    client/
        coproc_detect.cpp

Charlie 13 Feb 2012
    - MGR: Update <organization_*> tags in 3 branded skins (GR, PtP, CE) to 
        new values from Matt Blumberg.

    clientgui/skins/
        GridRepublic/
            skin.xml
        Progress Thru Processors/
            skin.xml
        Charity Engine/
            skin.xml

Charlie 13 Feb 2012
    - Mac sandbox: In initial permissions check when launching Manager or Client, 
        don't check project-created subdirectories under project or slot 
        directories because we have not told projects these must be readable and 
        executable by group.
    
    client/
        check_security.cpp

David  14 Feb 2012
    - scheduler: fix bug that broke broadcast jobs (from Kevin)

    sched/
        sched_shmem.cpp

David  14 Feb 2012
    - assimilator: when enumerating results for a WU, check retval.
        Otherwise we might get a partial list,
        which screws up assimilation logic.

    sched/
        assimilator.cpp
    lib/
        hostinfo.h

David  14 Feb 2012
    - admin web: fix error when showing unsent results

    html/inc/
        db_ops.inc

Charlie 14 Feb 2012
    - API: Remove apparently unnecessary include of carbon.h (requested 
        by Bernd Machenschalk.)

    api/
        boinc_api.h
    clientscr/
        gfx_switcher.cpp

David  14 Feb 2012
    - storage stuff

    vda/
        vdad.cpp
        vda_lib.h

David  14 Feb 2012
    - client: instead of saying "comm deferred",
        say "project backoff XXX.XX".

    client/
        work_fetch.cpp

David  14 Feb 2012
    - client: more tweaks to work-fetch messages

    client/
        work_fetch.cpp

David  15 Feb 2012
    - web: in user search, show most recent rather than oldest users
    - web: don't show URL in account page if expavg_credit < 1.
        This discourages a type of spam.

    html/
        inc/
            user.inc
        user/
            user_search.php

David  15 Feb 2012
    - client: msg tweak

    client/
        work_fetch.cpp

David  15 Feb 2012
    - lib: change get_mac_address() to avoid sprintf(buf, "%s...", buf);
        use strcat instead
    - client: don't use get_mac_address() to create host CPIDs
        (we have plenty of other info to make them unique)
    - storage stuff

    db/
        schema_vda.sql
    lib/
        mac_address.cpp
        Makefile.am
    vda/
        vda_lib2.cpp
        vda_lib.h
    client/
        hostinfo_network.cpp

David  16 Feb 2012
    - client: fetch work from backup (zero resource share) projects
        only if a device instance is idle

    client/
        work_fetch.cpp

David  16 Feb 2012
    - web: change wording of buffer-size prefs

    html/inc/
        prefs.inc
    sched/
        sched_types.h
    vda/
        sched_vda.cpp

Charlie 16 Feb 2012
    - client: Remove some temporary debugging code.

    client/
        coproc_detect.cpp

David  16 Feb 2012
    - storage stuff (work in progress)
    - small code shuffle

    db/
        boinc_db.h
    sched/
        delete_file.cpp
    tools/
        backend_lib.cpp,h
    lib/
        str_util.h
    vda/
        sched_vda.cpp
        makefile

Charlie 16 Feb 2012
    - client: Always use GPU model name from OpenCL if available for ATI / AMD 
        GPUs because (we believe) it is more reliable and user-friendly.

    client/
        coproc_detect.cpp

David  17 Feb 2012
    - client: fix bug where WCG downloads were getting wrong size errors.
        To be honest, I don't know that the problem was or why my change fixed it.
    client/
        http_curl.cpp

Charlie 17 Feb 2012
    - client: Prevent an unlikely but possible crash.

    client/
        coproc_detect.cpp

Charlie 17 Feb 2012
    - MGR: Fix a Mac-only bug which showed Event Log if About BOINC is selected 
        from task bar menu when BOINC is hidden.

    clientgui/
        BOINCGUIApp.cpp
        BOINCTaskBar.cpp

Rom    17 Feb 2012
    - Tag for 7.0.16 release, all platforms
      boinc_core_release_7_0_16

    /
        configure.ac
        version.h

David  17 Feb 2012
    - db_purge: when deleting a workunit record,
        delete any assignments that refer to it

    db/
        db_base.cpp,h
    sched/
        db_purge.cpp

David  17 Feb 2012
    - server: add volunteer data archival to the build system

    sched/
        sched_config.cpp,h
        Makefile.am
    configure.ac
    Makefile.am
    vda/
        Makefile.am new
        makefile (renamed to makefile_orig)

Charlie 17 Feb 2012
    - Mac: Fix back trace to work under OS > 10.5.
    (Checked in to boinc_core_release_7_0_16 tag)

    lib/
        mac/
            mac_backtrace.cpp

Charlie 18 Feb 2012
    - client: Fix OpenCL NVIDIA GPU detection when CUDA is not present.

    client/
        coproc_detect.cpp

David  18 Feb 2012
    - client: tweak to work-fetch policy:
        if we're making a scheduler RPC to a project for reasons
        other than work fetch,
        and we're deciding whether to ask for work, ignore hysteresis;
        i.e. ask for work even if we're above the min buffer
        (idea from John McLeod).

    client/
        work_fetch.cpp,h
        cs_scheduler.cpp
    sched/
        feeder.cpp
    vda/
        vdad.cpp

David  19 Feb 2012
    - client: fix bug in notices where, after a notice is deleted,
        the notices tab refreshes once/second forever after

    client/
        cs_notice.cpp

Rom    20 Feb 2012
    - Tag for 7.0.17 release, all platforms
      boinc_core_release_7_0_17

    /
        configure.ac
        version.h

David  20 Feb 2012
    - client: message tweaks
    - scheduler: fix crash when use <enable_assignment>

    sched/
        db_purge.cpp
        sched_assign.cpp
    client/
        work_fetch.cpp

David  20 Feb 2012
    - Manager/Client: fix bugs in GUI RPC that prevented
        updates to proxy info from being saved by client

    lib/
        gui_rpc_client_print.cpp
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
    client/
        boinc_cmd.cpp

David  20 Feb 2012
    - Manager: compile fix

    clientgui/
        MainDocument.cpp

David  20 Feb 2012
    - scheduler: fix a couple of assigned-job bugs
        (need "where" at start of enumerate() clause!)

    sched/
        sched_util.cpp
        sched_assign.cpp

David  20 Feb 2012
    - client: define a "arrived-first" order on results
        in which the tiebreaker is MD5 of name.
        That way the order is stable
        (it doesn't change from one run of the client to the next)
        and it doesn't grep results with similar names
        (and hence for the same app).
        This ordering is used for
        1) the order of display in the manager
        2) the job scheduler's notion of FIFO

    client/
        client_types.h
        cs_statefile.cpp
        cpu_sched.cpp

Charlie 20 Feb 2012
    - client: Fix OpenCL NVIDIA GPU enumeration bug I introduced 
        with last checkin.

    client/
        coproc_detect.cpp

Charlie 20 Feb 2012
    - Tag for 7.0.18 release, all platforms
      boinc_core_release_7_0_18

    /
        configure.ac
        version.h

Charlie 20 Feb 2012
    - Mac installer: Update copyright notice from 2009 to 2012.

    clientgui/
        mac/
        SetVersion.cpp

David  21 Feb 2012
    - storage stuff

    db/
        schema_vda.sql
    py/Boinc/
        setup_project.py
    vda/
        vda.cpp
        vda_lib.cpp,h
        vda_lib2.cpp
        vdad.cpp
        ssim.cpp

Rom    21 Feb 2012
    - Vbox: Include date component in log messages to ease debugging long
        running VM tasks.
    
    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp, .h

David  22 Feb 2012
    - scheduler: in version selection, when deciding which version is fastest,
        we multiple projected FLOPS by a normal random var
        with mean 1 and stddev 0.1.
        Make the stddev configurable; in particular it can be zero.

    db/
        boinc_db.h
        schema_vda.sql
    sched/
        sched_config.cpp,h
        sched_version.cpp
    vda/
        vdad.cpp

David  22 Feb 2012
    - client: change the job scheduling policy for MT jobs.
        The old policy avoided running an N-CPU job unless N CPUs were free.
        This could result in idle CPUs for long periods; for example:
        on a 4-CPU machine, suppose you have a long 1-CPU job in EDF mode,
        and some 4-CPU jobs.
        3 CPUs will be idle until the 1-CPU job finishes.
        Furthermore, the work fetch mechanism won't try to get
        jobs (possibly non-MT) from other projects,
        because the RR simulation doesn't reflect the scheduling
        policy's exclusion principle.

        The change: schedule jobs until ncpus_used >= ncpus.
        E.g. in the above situation run the 1- and 4-CPU jobs together.
        In extreme cases we might run 3 1-CPU jobs and the 4-CPU job.
        This will degrade the performance of the 4-CPU job,
        but that's probably better than having idle CPUs.

    client/
        cpu_sched.cpp

David  22 Feb 2012
    - scheduler: tell the user if we're not sending work because
        VirtualBox is not installed

    sched/
        sched_customize.cpp

David  22 Feb 2012
    - scheduler and create_work: fix bugs that caused targeted jobs
        to be sent to non-targeted hosts.
        The feeder was erroneously putting targeted jobs
        in the shared mem cache.
        Changes:
        - The feeder only enumerates jobs for which
            workunit.transitioner_flags is zero.
            NOTE: this field is nonzero iff the job is assigned.
        - create_work: when creating an assigned jobs,
            set workunit.transitioner_flags appropriately

    db/
        boinc_db.cpp,h
        schema.sql
    sched/
        sched_array.cpp
    tools/
        create_work.cpp

David  22 Feb 2012
    - API, client, and Manager: add an optional "reason" argument to
        boinc_temporary_exit(),
        explaining why the app is exiting.
        Convey this to the client, and then to the Manager,
        and display it there and in the log.

    clientgui/
        MainDocument.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
    api/
        boinc_api.cpp,h
    client/
        client_types.cpp,h
        app.h
        app_control.cpp

David  22 Feb 2012
    - client: fix an instance of
        sprintf(buf, "%s...", buf)
        on Unix

    client/
        hostinfo_unix.cpp

Charlie 22 Feb 2012
    - API: fix compile error on Mac.

    api/
        macglutfix.m

Charlie 22 Feb 2012
    - client: When available, use total RAM value from CAL for all ATI 
        OpenCL GPUs, not only for the "best" GPU, so the descriptions 
        show this value.
    
    client/
        coproc_detect.cpp

David  22 Feb 2012
    - server: split out the "antique file deletion" feature of
        file_deleter.cpp into a separate program,
        since it blocks normal file deletion while it's running.
        From Bernd.
    - storage stuff

    db/
        boinc_db.cpp,h
        schema_vda.sql
    sched/
        file_deleter.cpp
        antique_file_deleter.cpp (new)
        Makefile.am
    vda/
        vdad.cpp
        vda_lib.cpp
        vda_lib2.cpp
        vda.cpp

David  22 Feb 2012
    - install antique file deleter as periodic task (24 hours)
        when create new project

    sched/
        antique_file_deleter.cpp
    tools/
        make_project
    py/Boinc/
        setup_project.py

Charlie 23 Feb 2012
    - MGR: Update <organization_help_url> in Progress Through Processor's 
        skin file again as requested by Matt Blumberg on 17 February 2012.

    clientgui/skins/Progress Thru Processors/
        skin.xml

Charlie 24 Feb 2012
    - Mac installer: Create RealName field for users boinc_master and 
        boinc_project and set it to empty string (following new advice from 
        Apple Developer technical Suport.)

    clientgui/
        mac/
            SetupSecurity.cpp

Rom    24 Feb 2012
    - MGR: Rename the "Remaining" column to "Remaining (Estimated)" in the
        Advanced GUI/Work view.
    
    clientgui/
        ViewWork.cpp

David  24 Feb 2012
    - client: amend checkin of 18 Feb to not request work if
        work buffer is above upper limit

    client/
        work_fetch.cpp

David  24 Feb 2012
    - storage stuff

    vda/
        vdad.cpp
        vda.cpp
        vda_lib2.cpp
        vda_lib.h

David  24 Feb 2012
    - storage stuff

    db/
        boinc_db.h
        schema_vda.sql
    sched/
        delete_file.cpp
        put_file.cpp
        get_file.cpp
    tools/
        backend_lib.cpp,h
    vda/
        vda.cpp
        vda_policy.cpp,h (new)
        vda_lib.cpp,h
        Makefile.am
        ssim.cpp

David  24 Feb 2012
    - scheduler: when choosing the best app version,
        by default we skip app versions that use a resource
        for which work has not been requested.
        This is determined by the "check_req" arg to get_app_version().
        This flag is cleared whenever we want to send a job
        regardless of whether a requested resource can be used:
        namely, when resending lost jobs, and when sending assigned jobs.

        Fix a bug that could skip unrequested versions even
        when check_req is false.

        NOTES:

        1) The current semantics aren't right.
        When check_req is false, we selected the fastest of all app versions,
        including those for which no work is requested.
        Instead, we should select the fastest of the versions
        for which work is requested if there are any;
        otherwise, select the fastest version.

        2) The mechanism isn't implemented for anonymous platform.
        It should be.

        3) If we've cached an answer (including NULL) for a given
        value of check_req, that answer may be wrong for a different value.

    sched/
        sched_version.cpp

Bernd  27 feb 2012
    - db_purge: record result and workunit name in index file

    sched/
        db_purge.cpp

Bernd  27 feb 2012
    - validator: output the version string even when not in project directory

    sched/
        validator.cpp

Bernd  27 feb 2012
    - scheduler: allow to configure userids for which the scheduler should
        not scan the host table. This was previously hardcoded for
        Einstein@home to prevent some users with many (identical) hosts
        from flooding the DB with slow queries. Now add
        <dont_search_host_for_userid>userid</dont_search_host_for_userid>
        to the project config (in config.xml) for each such userid.

    sched/
        sched_config.h
        sched_config.cpp
        handle_request.cpp

Bernd  27 Feb 2012
    - scheduler: fix typo in previous commit (patch was using old parser)

    sched/
        sched_config.cpp

Bernd  27 Feb 2012
    - scheduler: the scheduler (stderr) log is buffered to keep the output of
        one instance together in the scheduler.log when multiple instances are
        running. Currently the buffer has a fixed size of 32768 charaters.
        On one hand with much debug output this buffer may turn out to be
        too small. OTOH the log of this instance is completely lost in case
        of a crash, which doesn't help with debugging. Thus make the
        scheduler log buffer size configurable using the tag
        <scheduler_log_buffer> in project config. The default value is
        still the old size (32768), set it to 0 to disable buffering
        completely, e.g. for debugging.

    sched/
        sched_config.h
        sched_config.cpp
        sched_main.cpp

Bernd  27 Feb 2012
    - scheduler: Another feature for debugging the scheduler.
        Previously (little known) the scheduler could be hacked to preserve
        the sched_request.xml and sched_reply.xml in own directories
        (you had to modify the initial value of use_files in sched_main.cpp).
        This feature could now be switched on and off on the fly just by
        changing the project config.
        When there is an (existing) directory configured as
        <debug_req_reply_dir>, each schduler instance will write three
        files in there: PID_C_sched.log, PID_C_sched_request.xml and (if all
        goes well) PID_C_sched_reply.xml. PID is the process id of this
        scheduler instance, C is an internal counter within the process if
        FCGI is used. The sched.log will contain nothing else than the
        pid and the IP address of the client. This should allow for
        identifying the scheduler instance responsible for a given
        apache error log message ("premature end of script headers") when
        a scheduler crashed. sched_request.xml (obviously) is the scheduler
        request, and if the scheduler doesn't crash in between, there will
        also be the reply to the client kept in sched_reply.xml
        Remove the <debug_req_reply_dir> tag from the project config
        to turn this feature off.

    sched/
        sched_config.h
        sched_config.cpp
        sched_main.cpp

Rytis  27 Feb 2012
    - change antique_file_deleter logic not to delete files that still have
        workunit records

    sched/
        antique_file_deleter.cpp

David  27 Feb 2012
    - VDA: add some log messages
    - scheduler: add VDA
    - client, web: change default prefs to min_buf=.1 days, max_buf=.5 days
    - scheduler: app plan function for vbox requires 7.0+ client

    Makefile.incl
    sched/
        antique_file_deleter.cpp
        sched_config.cpp,h
        sched_customize.cpp
        handle_request.cpp
    html/inc/
        prefs.inc
    lib/
        prefs.cpp
    vda/
        vda.cpp
        sched_vda.cpp,h

Charlie 28 Feb 2012
    - MGR: Change strings in Simple View to match changes in Advanced View: 
        "Remaining" -> "Remaining (Estimated)", "Home page" instead of project 
        name in web links.

    clientgui/
        sg_ProjectWebSitesPopup.cpp
        sg_TaskPanel.cpp

David  28 Feb 2012
    - storage stuff

    db/
        boinc_db.cpp,h
        schema_vda.sql
    sched/
        sched_types.cpp,h
    vda/
        sched_vda.cpp

David  28 Feb 2012
    - storage stuff.  Getting there.

    db/
        boinc_db.cpp
    sched/
        handle_request.cpp
    vda/
        vdad.cpp
        vda_policy.h
        sched_vda.cpp
        vda.cpp

David  29 Feb 2012
    - wrapper: compute final CPU time correctly for multi-process apps
    - storage stuff

    db/
        boinc_db.cpp,h
        schema_vda.sql
    samples/wrapper/
        wrapper.cpp
    vda/
        vda_lib.cpp,h
        sched_vda.cpp
        vda.cpp
        ssim.cpp

Charlie 29 Feb 2012
    - client: On Mac only, get ATI RAM sizes from OpenGL.

    client/
        coproc_detect.cpp
    lib/
        coproc.h
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Rom    29 Feb 2012
    - VBOX: Implement an exponential backoff scheme of sleeping between
        commands if a session lock error has been detected.  Cap the overall
        delay to 30 seconds total for a single command.

        Experiments performed by jujube(T4T) suggest changing the sleep interval
        to an exponential style backoff would increase our chances of recovering in
        situations where the previous lock is held by a previous instance of
        vboxmanage whos instance data hasn't been cleaned up within vboxsvc yet.

    client/
        vbox.cpp

David  1 Mar 2012
    - client: fix crashing bug when there is 1 instance of a resources.
        I'm not sure how this ever worked.

    client/
        work_fetch.h
    sched/
        feeder.cpp
    vda/
        storage.txt

Rom    2 Mar 2012
    - Tag for 7.0.19 release, all platforms
      boinc_core_release_7_0_19

    /
        configure.ac
        version.h

Charlie 3 Mar 2012
    - Mac installer: Utility shell script creates users & groups boinc_master 
        and boinc_project with IDs at 501 or above; also creates RealName field 
        for users boinc_master and boinc_project and sets it to empty string 
        (following advice from Apple Developer technical Suport.)

    mac_build/
        Mac_SA_Secure.sh

David  3 Mar 2012
    - Manager: small code cleanup
    client/
        client_state.cpp
    clientgui/
        DltItemProperties.cpp,h

David  3 Mar 2012
    - Manager: in Project Properties page,
        show if a GPU type is excluded by configuration
    - client: don't fetch work for a resource type if all instances
        of that type are excluded
    - web: don't use filter_var(, FILTER_SANITIZE_STRING)
        to strip HTML tags from a string.
        This escapes singles quotes also.
        Use strip_tags() instead.

    clientgui/
        DltItemProperties.cpp
    html/inc/
        util.inc
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

David  3 Mar 2012
    - LAMMPS job submission: set rsc_fpops_bound to 20 times rsc_fpops_est
    html/user/
        lammps.php

David  4 Mar 2012
    - web: open BBCode instructions in new window (or tab).
        Otherwise, on IE, you lose the text you already entered
        when you go back.

    html/inc/
        util.inc

Bernd  5 Mar 2012
    - scheduler: fix/augment file_deleter usage message

    sched/
        file_deleter.cpp

David  5 Mar 2012
    - LAMMPS: fix code formatting

    html/user/
        lammps.php

Rom    6 Mar 2012
    - Tag for 7.0.20 release, all platforms
      boinc_core_release_7_0_20

    /
        configure.ac
        version.h

David  8 Mar 2012
    - API: fix various bugs related to process control and critical sections.
    - client: code cleanup (no functional change)

    api/
        boinc_api.cpp
        windows_opengl.cpp
    client/
        app.cpp
        app_control.cpp
    vda/
        *
    
Rom    8 Mar 2012
    - VBOX: Parse the vboxmanage error code for *nix as well.
    - VBOX: Switch to using status.suspend_request instead of status.suspend
        when determining when to suspend/resume a VM.  status.suspended is
        now only changed when direct_process_action is set to true.

    samples/vboxwrapper/
        vboxwrapper.cpp
        vbox.cpp

David  9 Mar 2012
    - API: remove BOINC_STATUS::suspend_request;
        it's an implementation thing, not intended for export.
        Fix a related bug.

    samples/vboxwrapper/
        vboxwrapper.cpp
    api/
        boinc_api.cpp
    vda/
        vda_lib.cpp

Rom    9 Mar 2012
    - VBOX: Setting the CPU Execution Cap should be done with the controlvm
        command after the VM has entered a running state instead of using
        modifyvm.
    
    samples/vboxwrapper/
        vbox.cpp

David  9 Mar 2012
    - web: allow a project to specify 2 stylesheets

    html/
        inc/
            util.inc
        project.sample/
            project.inc

Rom    9 Mar 2012
    - VBOX: Allow the CPU execution cap to be set back to 100% after it had
        alreadly been set lower.

    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

David  10 Mar 2012
    - storage: add some code

    vda/
        vda_lib.cpp,h
        ssim.cpp
        vdad.cpp

David  10 Mar 2012
    - forgot to add files

    vda/
        stats.cpp,h (new)

Bernd  12 Mar 2012
    - scheduler: remove lock file when scheduler caught SIGTERM

    sched/
        handle_request.h
        sched_main.cpp

Rom    12 Mar 2012
    - VBOX: Only attempt to reset throttle values if the VM is in
        a running state, otherwise controlvm throws an error.
    
    samples/vboxsamples/
        vboxwrapper.cpp

Rom    12 Mar 2012
    - VBOX: If a VM fails to start because the machine is low on memory,
        temporarily exit so BOINC can reschedule it for a later time.
        If the problem doesn't go away it'll just time out eventually anyway.
    
    samples/vboxsamples/
        vboxwrapper.cpp

David  12 Mar 2012
    - server: allow <db_host> to include a :port

    db/
        db_base.cpp

David  12 Mar 2012
    - client: msg tweak and fix compile warnings

    client/
        client_types.cpp
        coproc_detect.cpp
        work_fetch.h
    lib/
        coproc.h
        str_util.cpp

Charlie 12 Mar 2012
    - client: fix compile errors.

    client/
        client_types.cpp

Charlie 12 Mar 2012
    - client: In COPROCS::get_ati_mem_size_from_opengl() on Mac, compare ATI 
        model names from OpenGL with those from IOKit only if coproc_debug 
        flag is set.

    client/
        coproc_detect.cpp

Charlie 12 Mar 2012
    - VBOX: Fix typo in Mac wrapper name (1686 -> i686).

    samples/vboxwrapper/
        vboxwrapper.xcodeproj
            project.pbxproj

David  13 Mar 2012
    - scheduler: do homogeneous app version check before rereading WU
        as well as after.

    sched/
        sched_send.cpp,h

David  13 Mar 2012
    - transitioner: don't clear a WU's HR and HAV class if there are
        timed-out instances; they could still be returned.

    sched/
        transitioner.cpp

Charlie 14 Mar 2012
    - MGR: fix French translations of Remaining (estimated).

    locale/fr/
        BOINC_Manager.po

Charlie 14 Mar 2012
    - client: When comparing ATI model names from OpenCL and IOKit on a 
        Mac, substitute "AMD" for "ATI" because sometimes one API returns 
        "ATI" but the other API returns "AMD".

    client/
        coproc_detect.cpp

Rom    14 Mar 2012
    - VBOX: Use the boinc_temporary_exit API properly.  Wait for 5 minutes
       before allowing another attempt to start the VM when the hypervisor
       cannot allocate enough memory.
    - VBOX: Print out a trace statement about the suspend/resume directive
       from the vboxwrapper perspective.  This in conjuction with the
       BOINC API trace statements should provide a better idea with
       what is going on.
   
    samples/vboxwrapper
        vboxwrapper.cpp

David  14 Mar 2012
    - scheduler: add an alternative way of defining app plan functions
        that uses an XML configuration file;
        see http://boinc.berkeley.edu/trac/wiki/AppPlanConfig
        From Bernd.

    sched/
        sched_customize.cpp
        plan_class_spec.cpp,h
        Makefile.am

David  14 Mar 2012
    - scheduler: code cleanup for the above

    sched/
        plan_class_spec.cpp,h

Charlie 14 Mar 2012
    - client: On Mac only, update ATI available RAM after getting ATI total 
        RAM size from OpenGL.

    client/
        coproc_detect.cpp

David  14 Mar 2012
    - scheduler: fix FCGI compile

    vda/
        sched_vda.cpp

David  14 Mar 2012
    - client: on each scheduler RPC,
        make sure that files flagged as executable in the reply,
        and that are present, are actually executable.

    client/
        client_types.cpp

David  15 Mar 2012
    - client: when killing a task, don't delete its shmem or change its state.
        These mess up the logic for dealing with exited processes,
        resulting in incorrect log messages.

    client/
        app.cpp
        app_control.cpp

David  15 Mar 2012
    - scheduler: when HR is being used,
        make per-HR slot allocation an option rather than the default.
        Kevin reported that slot allocation wasn't working for WCG.
        The default is now no slot allocation,
        and use the regular result enumeration function
        rather than the once that scans the entire table.
        The config flag for enabling slot allocation is <hr_allocate_slots/>.

    sched/
        sched_config.cpp,h
        feeder.cpp
        hr_info.cpp

Rom    15 Mar 2012
    - VBOX: Give the VM process a short priority boost when responding
        to a quit request.  On older XP machines it might speed up the memory
        dump to disk.
    - client: Increase the quit request timeout from 10 seconds to 60 seconds for
        machines running VMs and slow disk drives.  It should give the VM enough
        time to gracefully shutdown and not give boinc reason to kill the wrapper.

    client/
        app.h
    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

Rom    16 Mar 2012
    - Moving trunk back into a development branch, further stabilization of the 7.0.x
        client is now in the boinc_core_release_7_0a branch.

    /
        configure.ac
        version.h
        version.h.in

David  16 Mar 2012
    - client: small changes to make client compile on Android,
        and to report the platform as "arm-android".
        From Carl Christensen.
    - Add a script for building BOINC and library dependencies on Android
        From Peter Hanappe.

    lib/
        mac_address.cpp
    client/
        android/
            AndroidBuild.sh (new)
        cs_platforms.cpp
        hostinfo_unix.cpp

David  17 Mar 2012
    - client: use %g to format job resources (#CPUs, #GPUs).
        This suppresses trailing zeroes and (if integer) the .

    client/
        client_types.cpp

David  17 Mar 2012
    - client: changes to job scheduling policy:
        - fix bug that could greatly overcommit CPUs
            if there are several EDF jobs and several non-EDF GPU jobs.
        - don't overcommit CPUs if any job is MT (MT means avg_ncpus > 1).
            For example, on a 4-CPU machine we will run:
                a 0.5-CPU GPU job and 4 1-CPU jobs
                but not
                a 0.5-CPU GPU job and 1 4-CPU job
    client/
        cpu_sched.cpp

Charlie 18 Mar 2012
    - MGR: Fix a Mac-only bug which sometimes failed to show the suspended 
        icon after closing and opening the Manager windows.  This was caused 
        by having a second instance of CTaskBarIcon.

    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp,.h
        mac/
            MacSysMenu.cpp

David  19 Mar 2012
    - client: job scheduling policy tweak:
        if CPUs are fully committed (e.g. with EDF jobs)
        allow GPU jobs but only up to CPU usage of ncpus+1

    client/
        cpu_sched.cpp

David  19 Mar 2012
    - client: Don't include VBox executive processes as non-BOINC CPU time.
        On some systems they use significant CPU time while VMs are running.
        TODO: do this only if we're actually running a VBox app

    lib/
        procinfo.cpp

David  19 Mar 2012
    - wrapper: fix bug that reported wildly wrong CPU time

    lib/
        procinfo.cpp

David  19 Mar 2012
    - scheduler: fix a bug in assigning deadlines to resent jobs.
        From Kevin.
        NOTE: Kevin also reported a bug that resulted in
        way too large (e.g. year) deadlines.

    sched/
        sched_send.cpp

David  19 Mar 2012
    - client: if an app process exits because of a signal,
        don't show the "no finish file" message;
        not sure why this was there in the first place.
    - client: if an app process exits because of a signal,
        show the signal correctly

    client/
        app_control.cpp

David  19 Mar 2012
    - scheduler: if we can't resend a job (e.g. it's for an app
        for which the anonymous-platform client doesn't have a version)
        mark it as sent so the transitioner can do its thing

    sched/
        sched_resend.cpp

Rom    20 Mar 2012
    - VBOX: Make it explicitly clear what the result of a start/stop
        request was.  Hopefully this will give us insight into whether
        the core client is terminating the wrapper or something else is
        going on.
    - VBOX: Shorten the command execution timeout to 45 seconds.
    - VBOX: Don't attempt to re-execute the close/savestate commands.

    samples/vboxwrapper/
        vbox.cpp

Rom    20 Mar 2012
    - VBOX: On successful completion, create the same output file that
        the CernVMWrapper would.  This allows both wrapppers to work with
        the same BOINC job generation system.

    samples/vboxwrapper/
        vbox.cpp

David  20 Mar 2012
    - client: report completed results if a time-of-day network suspend is
        scheduled within the next 30 minutes

    client/
        app.h
        client_state.h
        cs_prefs.cpp
        cs_scheduler.cpp
        app_control.cpp
    lib/
        prefs.cpp,h

Rom    20 Mar 2012
    - client: Initialize buffer which is used to hold the temporary exit reason.
        If somebody didn't populate the reason when calling boinc_temporary_exit
        the buffer contained junk.

    client/
        app_control.cpp

Bernd  21 Mar 2012
    - scheduler: fix hu.peak_flops and hu.projected_flops caclculation
        in plan_class_spec by using coproc_pref() and capped_host_fpops()
        (moved coproc_perf() to sched_customize.h to make it available
        in plan_class_spec.cpp, and cleaned up includes)

    sched/
        sched_customize.cpp,h
        plan_class_spec.cpp,h

David  21 Mar 2012
    - client: set file ownership and permissions after an async verify.
        This was presumably the cause of the recent Einstein@home problem.
    - client: set file ownership and permissions after an async copy.
    - client: set file ownership and permissions after a
        regular (non-async) copy.

        The latter 2 bugs would affect a VM app that copies
        its executable to slot/x/shared

    client/
        client_types.cpp,h
        async_file.cpp,h
        app_start.cpp

Rom    21 Mar 2012
    - VBOX: Introduce the use of VM snapshots as a form of checkpoint.
        - Perform snapshots at most once every ten minutes.
        - Client suspend/resume messages behave the same.
        - Client no heartbeat/quit messages cause the wrapper to just
          poweroff the VM.
    
        On startup check to see if the last checkpoint time is greater than 0,
        if so, start from the most recent snapshot.
    - VBOX: If we receieve the status message of no heartbeat or quit, set
        the temporary delay to 5 minutes.  If the wrapper is terminated during
        the middle of a snapshot, hopefully this will give VirtualBox enough
        time to complete the snapshot.  Restarting the BOINC job should then
        poweroff the VM and restore from the last snapshot.

    samples/vboxwrapper/
        vbox.cpp, .h
        vboxwrapper.cpp

David  21 Mar 2012
    - client: change timeout for job quit/abort from 60 back to 15
        (time between sending app a quit/abort message
        and, if not exited yet, killing it)
    - client: if app has reported an "other PID"
        (e.g., vboxwrapper reports the VBoxHeadless PID)
        then include it (along with descendants) in the
        list of processes we kill when killing the job.

    client/
        app.h
        app_control.cpp

Rom    21 Mar 2012
    - VBOX: We don't need to display the state of the VM before startup.
    - VBOX: Change the snapshot naming scheme by removing the quotes and
        prefixing the checkpoint time with 'boinc_'.  Hopefully this will
        prevent the VM from asserting during the snapshot process.

    samples/vboxwrapper/
        vbox.cpp, .h

Rom    21 Mar 2012
    - VBOX: Before attempting to take the snapshot for a VM, pause it first.
        This changes the snapshot type from a live snapshot to an online
        snapshot.  Presumably difference might make it easier to do and
        prevent the VM from asserting.
    
    samples/vboxwrapper/
        vbox.cpp, .h

Rom    22 Mar 2012
    - VBOX: Detect another form of out of memory error from VirtualBox.
        Reschedule the job for some time in the future when there might
        be enough memory.
    - VBOX: Resume the VM's execution after the creation of the snapshot
        but before we attempt to delete the previous, now stale, snapshot.
    - VBOX: Treat the 'livesnapshotting', 'deletingsnapshotlive', and
        'deletingsnapshotlivepaused' states as online states.
    
    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

Rom    22 Mar 2012
    - VBOX: Do not treat the timeout error as a fatal error when attempting
        to delete stale snapshots.  Slower machines can take longer than
        45 seconds to complete the deletion of old snapshots.

    samples/vboxwrapper/
        vbox.cpp

David  22 Mar 2012
    - client/server: add optional <dont_use_dcf/> to schedule reply.
        If set, client won't use DCF for this project.
        Make this the default in server code;
        we now do runtime estimation entirely on the server side,
        and the client-side mechanism is counterproductive.

    sched/
        sched_types.cpp,h
    client/
        client_types.cpp,h
        scheduler_op.cpp,h
        work_fetch.cpp
        cs_scheduler.cpp
        cpu_sched.cpp

David  23 Mar 2012
    - server: is_project_dir() was checking that cgi-bin is a directory.
        This doesn't work if it's a symlink to a dir.
        Check for that too.

    lib/
        filesys.cpp,h
    sched/
        sched_config.cpp

David  23 Mar 2012
    - client: if a job calls boinc_temporary_exit() 100 times, abort it.
        Otherwise it could keep doing it forever
        (e.g. if there's not ever enough available GPU RAM)

    client/
        app.h
        app_control.cpp

David  23 Mar 2012
    - scheduler: fix bug that could cause zero credit for
        the first few jobs of a new application
        (in wu_estimated_pfc(), only multiply by app.min_avg_pfc
        if it's nonzero).

    sched/
        credit.cpp

David  23 Mar 2012
    - client/server: estimate FLOPS for NVIDIA GPUs with
        compute capability 3.x.
        Not sure if the parameters are right
        (128 cores/proc, 2 flops/clock)
        but they're better than nothing.
    - web: don't allow user names that have leading or trailing white space,
        or HTML tags, or are empty

    html/
        inc/
            user.inc
        user/
            openid_login.php
            create_account_action.php
            edit_user_info_action.php
            create_account.php
    lib/
        coproc.cpp
        error_numbers.h
    client/
        coproc_detect.cpp

Rytis  24 Mar 2012
    - web: fix previous commit.

    html/
        inc/
            user.inc

David  25 Mar 2012
    - compile fix for redhat, from Steffen Moller

    clientgui/gtk/
        taskbarex.cpp,h

David  26 Mar 2012
    - scheduler: enforce app_version.max_core_version

    sched/
        sched_version.cpp

David  26 Mar 2012
    - client: report results if CPU suspend pending in next 30 min

    client/
        cs_scheduler.cpp

David  26 Mar 2012
    - client: set PROJECT::last_upload_start whenever an upload starts,
        not just when a result becomes ready to upload.
        Fix bug where a scheduler RPC to report results is done
        even though uploads are active.
    - client: cpu_sched_debug enables messages about not scheduling jobs
        because of insufficient RAM
    
    client/
        pers_file_xfer.cpp
        cpu_sched.cpp

David  26 Mar 2012
    - web: add script for replacing blank user names with the user ID

    html/ops/
        fix_blank_user_names.php

David  26 Mar 2012
    - client/server: set cores/proc for NVIDIA compute capability 3.0 to 192
        Why can't NVIDIA provide an API for this?????

    lib/
        coproc.cpp

David  27 Mar 2012
    - client: fix typo that prevented GPU jobs from running
        if CPUs were filled with EDF jobs

    client/
        cpu_sched.cpp

David  27 Mar 2012
    - client: fix bug where if we sent app a <quit> message,
        and it timed out and we killed it, we'd treat it as a job error.
        (This was a major bug).
    - API: remove BOINC_STATUS::suspend_request.
        I meant to do this before.

    api/
        boinc_api.h
    client/
        app_control.cpp

David  27 Mar 2012
    - client: fix bug in reading reason for temporary exit
    - lib: fix a valgrind warning

    lib/
        parse.cpp
    client/
        app_control.cpp

David  27 Mar 2012
    - scheduler: zero host.nsame_ip_addr if IP addr differs from previous

    sched/
        handle_request.cpp

David  27 Mar 2012
    - client/scheduler: fix error in NVIDIA peak flops calculation

    lib/
        coproc.cpp

David  27 Mar 2012
    - scheduler: ignore app_version.max_core_version if it's zero

    sched/
        sched_version.cpp
    vda/
        vda.cpp
        vdad.cpp
        sched_vda.cpp

Charlie 29 Mar 2012
    - Mac installer: When checking for duplicate group membership entries, 
        count only whole words (preceded and followed by white space) so
        that if we have both 'jon' and 'jones' we don't count 'jon' twice.
    - Mac uninstaller: Use Directory Services to find the user names of 
        all human users instead of stepping through the entries in the 
        /Users directory.

    mac_installer/
        PostInstall.cpp
        Uninstall.cpp

Charlie 29 Mar 2012
    - client: Fix idle detection during fast user switching.  See comments 
        in HOST_INFO::users_idle() for details.

    client/
        hostinfo_unix.cpp

David  30 Mar 2012
    - scheduler: don't max with min_work_buffer() in estimating
        job turnaround time.
        min_work_buffer doesn't necessarily reflect network disconnect periods
    - client simulator: compile fixes

    sched/
        sched_send.cpp
    vda/
        vdad.cpp
    client/
        sim.cpp
        sim_util.cpp
        client_types.cpp
        cs_scheduler.cpp
        app.cpp

Charlie 31 Mar 2012
    - MGR: Revert my changes of 18 March to Mac Task Bar Icon because the 
        second instance is needed to handle our Dock menu.  Fix the earlier 
        problem of losing the suspended icon by ensuring that we always 
        call the same instance of CTaskBarIcon::SetIcon().

    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp,.h
        BOINCTaskBar.cpp,.h
        mac/
            MacSysMenu.cpp,.h

David  2 Apr 2012
    - client: change some unsigned int to size_t in our versions
        of NVIDIA APIs.  This apparently caused crashes
        (in app, not client, which I don't understand) for Einstein@Home.
        From Steffen Moller.

    html/ops/
        db_update.php
    lib/
        coproc.h
    client/
        coproc_detect.cpp

David  2 Apr 2012
    - client: don't write deviceHandle to NVIDIA XML description.
        Um, pointers don't have any meaning outside the process

    lib/
        coproc.cpp

David  5 Apr 2012
    - admin web: when resetting app statistics,
        clear elapsed time stats as well as PFC stats

    db/
        boinc_db.h
    sched/
        sched_version.cpp
    html/ops/
        app_reset.php

David  9 Apr 2012
    - server: create a harness for testing validator code.
        If you link your functions (init_result(), compare_results(),
        cleanup_result()) with validate_test.cpp,
        you'll get a program that you can run as
            validate_test file1 file2
        and it will compare the two files
        (this works only for validators that expect 1 file per result).

        I added a makefile, sched/makefile_validator_test,
        that you can use for this.
    - server: shuffle code so that the above doesn't need to
        link MySQL libraries
    - client: if we fetch a master file and it contains no scheduler URLs,
        show a message of class INTERNAL_ERROR
    - client/scheduler: make CUDA_DEVICE_PROP.totalGlobalMem a double,
        and remove dtotalGlobalMem.
        Although NVIDIA reports RAM size as a size_t,
        there's no reason to store it as an integer after that.

    db/
        boinc_db.h
        boinc_db_types.h
    sched/
        validate_util2.h
        validate_util.h
        makefile_validator_test
        plan_class_spec.cpp
        sched_send.cpp
        validator_test.cpp
        validator.cpp
    html/inc/
        stats_sites.inc
    lib/
        coproc.cpp,h
    client/
        coproc_detect.cpp
        scheduler_op.cpp

David  9 Apr 2012
    - API: fix C compile error
    - initial checkin of remote job stuff for app from ICT

    tools/
        tt_boinc
    api/
        boinc_api.h
    html/user/
        tree_threader.php

David  12 Apr 2012
    - CAS@home stuff
    tools/
        tt_boinc.cpp
    html/user/
        tree_threader.cpp

David  12 Apr 2012
    - add script for canceling jobs
    - CAS@home stuff

    tools/
        tt_boinc
    html/
        ops/
            cancel_wu_action.php
            cancel_wus.php
        inc/
            util_ops.inc
        user/
            tree_threader.php
        
Charlie 12 Apr 2012
    - web: separate Intel-only from Universal (PowerPC & Intel) clients 
        on download-all page so that PowerPC clients don't tell users 
        to upgrade to intel-only version.

    doc/
        versions.inc

David  13 Apr 2012
    - CAS@home stuff

    tools/
        tt_boinc
    html/user/
        tree_threader.php

David  13 Apr 2012
    - wrapper: when reading fraction-done file, read the last line
        (or at least the last double).
        This accommodates a particular application (LAMMPS)
        that can only append to this file.
    - CAS@home stuff

    sched/
        sched_util.cpp
        sched_send.cpp
    tools/
        tt_boinc
    html/user/
        submit.php
        tree_threader.php
    samples/wrapper/
        wrapper.cpp

David  13 Apr 2012
    - client: add PID to random stuff used to make host CPID,
        in case running multiple clients on same host

    client/
        hostinfo_network.cpp

David  17 Apr 2012
    - scheduler: fix bug in assigned-job logic (from Derrick Kondo)
    - client: only send active tasks in get_simple_gui_info GUI RPC

    sched/
        sched_assign.cpp
    client/
        client_types.h
        gui_rpc_server_ops.cpp

David  17 Apr 2012
    - scheduler: add a program that targets remaining jobs in a batch
        to a particular user (e.g. for cloud execution).
        From Derrick Kondo.

    sched/
        target_batch.cpp

David  17 Apr 2012
    - scheduler: handling of allow_multiple_clients flag from client
        was wrong.  From Bernd.

    sched/
        handle_request.cpp

David  19 Apr 2012
    - web: don't show account keys on account page;
        rewrite the page explaining and showing account keys.
    - client: remove <std_debug> log flag
    - client: remove <zero_debts> config option

    html/
        inc/
            user.inc
        user/
            weak_auth.php
    lib/
        cc_config.cpp,h
    client/
        log_flags.cpp

David  19 Apr 2012
    - fix many problems with validator_test

    sched/
        sched_util.h
        makefile_validator_test
        sample_dummy_assimilator.cpp
        single_job_assimilator.cpp
        sched_util.cpp
        sample_bitwise_validator.cpp
        validate_util.cpp,h
        validator_test.cpp
        sample_assimilator.cpp

Rom    19 Apr 2012
    - Update copyrights.

    client/win/
        boinc_cli.rc
        boinc_cmd.rc
        boinc_log.rc
    clientctrl/
        boincsvcctrl.rc
    clientgui/
        BOINCGUIApp.rc
        DlgAbout.cpp
    clientscr/
        boinc_ss.rc
        boinc_ss_opengl.rc
    clienttray/
        boinc_tray.rc

David  20 Apr 2012
    - back end: print error messages instead of numbers in several places

    tools/
        dir_hier_move.cpp
        backend_lib.cpp
        process_input_template.cpp
        dir_hier_path.cpp
        create_work.cpp

David  20 Apr 2012
    - client: add <suspend_debug> log flag

    lib/
        cc_config.cpp,h

David  20 Apr 2012
    - client: add <suspend_debug> log flag

    client/
        cs_prefs.cpp

David  20 Apr 2012
    - client/server: remove assert()s from message log code

    lib/
        msg_log.cpp

Rom    20 Apr 2012
    - MGR: Show() does not restore the window state from a minimized state.  Use
        maximize(false) to handle that situation.
    
    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp

David  20 Apr 2012
    - client: if we're contacting a project to ask it for work
        of a particular processor type,
        ask it for work of other types only if we're below
        max buffer for those types.

    client/
        work_fetch.cpp
        cs_prefs.cpp

David  21 Apr 2012
    - client: fix bug that could erroneously cause a GPU to
        be "blocked by config file".

    client/
        work_fetch.cpp
        coproc_detect.cpp

Rom    23 Apr 2012
    - client: fix function prototypes for CUDA detection.

    client/
        coproc_detect.cpp

David  23 Apr 2012
    - client: fix bug that caused a project's jobs to all be run EDF
        if the project has the <dont_use_dcf> flag set.

    client/
        cpu_sched.cpp

Rom    24 Apr 2012
    - WINSETUP: Fix long standing installer bug where we were attempting
        to add the boinc_master account to the boinc_admins group when
        installing in the non-service install mode.  boinc_master is only
        created during service installs.  This was causing a setup failure
        on Windows 8. As far as I can tell it should have also been failing
        on Win7 and WinVista.
    
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CACreateBOINCGroups.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  24 Apr 2012
    - update_versions: eliminate PHP warnings when no version.xml file

    tools/
        update_versions

David  25 Apr 2012
    - scheduler: fix bug that tried to open  plan class spec file
        on each request.
    - client: when showing how much work a scheduler request returned,
        scale by availability (as is done to show the amount of the request)
    - client in account manager request, <not_started_dur> and
        <in_progress_dur> are in wall time, not run time
        (i.e. scale them by availability)

    Note: there's some confusion in the code between runtime and wall time,
        where in general wall time = runtime / availability.
        New convention: let's use "runtime" for the former,
        and "duration" for the latter.

    sched/
        sched_customize.cpp
    client/
        client_types.cpp,h
        time_stats.h
        work_fetch.cpp
        rr_sim.cpp
        cs_scheduler.cpp
        cpu_sched.cpp

David  25 Apr 2012
    - client: fix crashing bug that happened when a scheduler reply
        had a parse error, and it included project files.
        While parsing the scheduler reply we'd add FILE_REFs to
        PROJECT::project_files,
        but wouldn't link them to FILE_INFOs since this is done
        only if the reply parses correctly.
        The next garbage_collect() would dereference these NULL pointers.

        Solution: parse the FILE_REFS into SCHEDULER_REPLY::project_files.
        Copy this to PROJECT::project_files only if the reply parses.

    client/
        client_types.cpp,h
        scheduler_op.cpp,h
        cs_scheduler.cpp
        cs_statefile.cpp

David  25 Apr 2012
    - Bad logic in Win code:
        if you have
            *pbuf = HeapAlloc(...)
        then you need
            if (*pbuf == NULL)
        not
            if (pbuf == NULL)
    - various code cleanups
    - Makefile.am: don't include clientgui/res; nothing to make there

    from Steffen Moeller

    sched/
        file_upload_handler.cpp
    lib/
        diagnostics_win.cpp
        procinfo_win.cpp
    Makefile.am
    client/
        coproc_detect.cpp
        client_types.cpp

David  26 Apr 2012
    - client: enforce <no_gpus> in config file not just at startup,
        but also when config file is re-read.

    client/
        log_flags.cpp

David  26 Apr 2012
    - A first attempt to fix the bug where apps die with exit(1)
        (whereas they didn't do this w/ older clients).
        On Windows, the client uses TerminateProcess(h, 1) to kill processes;
        the 1 is the exit code the process will appear to have.

        So instead, add a "will_restart" bool arg to the various kill
        functions, and if set use 0 (= STATUS_SUCCESS),
        otherwise use EXIT_ABORTED_BY_CLIENT.

        Note: in principle this shouldn't make any difference
        for quitting tasks,
        since handle_exited_app() checks for task state QUIT_PENDING
        and ignores the exit code in that case.
        The only place I can see where it would make any difference
        is when we kill a process because it hasn't been handling
        queued shared-memory messages for 180 seconds.

    - client: add more info to the message about an exited app

    - client: function return values (ERR_*) are different from
        process exit codes (EXIT_*).
        But in many places we were using return values as exit codes.
        Fix these.
        Also, break out the different types of limits a job can exceed
        (time, disk, memory) into difference exit codes.

    lib/
        error_numbers.h
    client/
        client_state.cpp
        app.h
        gui_rpc_server_ops.cpp
        cs_apps.cpp
        client_types.cpp
        cs_scheduler.cpp
        app_control.cpp

David  27 Apr 2012
    - compile fix

    lib/
        str_util.cpp

David  27 Apr 2012
    - scheduler: call get_reliability_and_trust() and get_prefs_info()
        in send_work_setup(), so that they run before lost jobs are resent.
        Otherwise lost jobs could get sent using an app version
        that's prohibited by prefs

    sched/
        sched_send.cpp

David  27 Apr 2012
    - web: put <nobr> around username | log in

    html/inc/
        util.inc

David  27 Apr 2012
    - scheduler: change ET_RATIO_LIMIT to 250

    sched/
        sched_version.cpp

Rom    27 Apr 2012
    - WINSCR: Use the DefProcHandler function when processing WM_CLOSE/WM_DESTROY
        window messages.  In effect, let Windows do the default thing.  This removes
        the hacks which kept the screensaver running with old versions of
        Microsoft's keyboard/mouse driver software installed.
    
    clientscr/
        screensaver_win.cpp, .h

David  30 Apr 2012
    - web RPC: include rpc_time in XML host description
    - client: if acct mgr sends us an account with no authenticator,
        show an error message instead of trying to attach

    html/
        inc/
            xml.inc
        user/
            show_user.php
    client/
        acct_mgr.cpp

David  30 Apr 2012
    - client: code cleanup.  Move RESULT and PROJECT to separate files

    client/
        project.cpp,h (new)
        result.cpp,h (new)
        *.cpp

David  30 Apr 2012
    - client: minor code shuffle

    client/
        project.cpp
        result.cpp
        client_state.h
        cs_scheduler.cpp
        cpu_sched.cpp

David  30 Apr 2012
    - client: if an app version needs OpenCL/CUDA/CAL,
        make sure that the GPU supports it
        (fix bug where sometimes, e.g. CUDA detection fails
        but OpenCL succeeds, and we have a CUDA app).

    client/
        client_types.cpp

Charlie 30 Apr 2012
    - lib: Fix compile break on Mac.

    lib/
        str_replace.h

Charlie 30 Apr 2012
    - Mac: Update XCode project with new source files.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  1 May 2012
    - Manager: message tweak
    - add new files to Win project

    clientgui/
        MainDocument.cpp
    win_build/
        boinc_cli.vcproj

Charlie 3 May 2012
    - Mac installer: changes for OS 10.8 compatibility.

    mac_installer/
        PostInstall.cpp
        Uninstall.cpp

Charlie 6 May 2012
    - Mac installer: changes for OS 10.8 compatibility.

    mac_installer/
        PostInstall.cpp
        Uninstall.cpp

David  6 May 2012
    - client: fix bug where coproc name could be set incorrectly when:
        a) there are multiple GPU vendors
        b) one of them is detected via OpenCL but not "native" (CUDA/CAL)

    client/
        coproc_detect.cpp

David  7 May 2012
    - web: if user.has_profile = 0 but there actually is a profile,
        update user.has_profile

    html/user/
        view_profile.php

Bernd  7 May 2012
    - lib: added function secs_to_hmsf() which converts (double) seconds
        to a string 0h00m00s00

    lib/
        str_util.cpp, .h

Bernd  8 May 2012
    - scheduler: no functional change, just got rid of DOS linebreaks

    sched/
        plan_class_spec.cpp,h

Bernd  8 May 2012
    - scheduler: don't override avg_ncpus per default

    sched/
        plan_class_spec.cpp

Bernd  9 May 2012
    - scheduler: get app_version info for validator items

    db/
        boinc_db.cpp


David  9 May 2012
    - C++ code: use MAXPATHLEN for char arrays that hold paths

    (many .cpp files)

David  9 May 2012
    - compile fix

    api/
        boinc_opencl.cpp,h

David  9 May 2012
    - Win compile fixes

    lib/
        boinc_win.h
        filesys.cpp
    samples/vboxwrapper/
        vboxwrapper.cpp

Rom    9 May 2012
    - lib: Fix a bug where information that was meant for stdout was
        being written to stderr instead.
    - lib: Keep track of the rough estimate of stdout and stderr by
        incrementing internal variables instead of doing a stat on
        each log write.  stat() on Windows is converted to a FindFirstFile()
        call which in turn looks up the file size information in the
        directory structure file system entry.  The directory structure 
        information is only updated periodically.  This lead to larger
        than expected log file for both the manager and core client.
        
        This has the added advantage of reducing the overall number of
        file I/O operations when logging information.
        
    lib/
        diagnostics.cpp

Charlie 10 May 2012
    - MGR: Eliminate QuickDraw calls for OS 10.8 compatibility.

    clientgui/
        BOINCGUIApp.cpp
        DlgEventLog.cpp
        DlgitemProperties.cpp
        sg_DlgMessages.cpp
        mac/
            MacGUI.cpp,.h

David  10 May 2012
    - diagnostics lib:
        - store file sizes as double rather than int
        - if we're appending to log files, initialize the
            size variables to the current size
        - check return value of fprintf, only increment size if it's +
        - when rotate log file, reset size var to zero

    lib/
        diagnostics.cpp

Bernd  11 May 2012
    - scheduler: don't try to send_file_deletes() with an incomplete request

    sched/
        handle_request.cpp


Rom    11 May 2012
    - VBOX: When the system confirms our port number request or assigns us a
        new port number to work with convert it from network byte order 
        (big endian) to the host byte order (little endian on x86/x64 processors).

    samples/vboxwrapper/
        vbox.cpp

David  11 May 2012
    - web: use gmdate() instead date() to avoid time zone warning
    html/
        inc/
            uotd.inc
            translation.inc
        user/
            cert_team.php
            cert1.php
            uotd.php
            cert_all.php
        project.sample/
            project.inc

David  13 May 2012
    - LAMMPS script: chdir back to html/user, else page_head() breaks

    html/user/
        lammps.php

David  14 May 2012
    - scheduler: revision of app_plan_spec mechanism.
        Not debugged, but it compiles now.

    sched/
        plan_class_space.cpp,h

Rom    15 May 2012
    - MGR: Add OpenCL icon to the ProjectInfo wizard page.

    clientgui/
        ProjectInfoPage.cpp, .h
    clientgui/res/
        openclicon.xpm
    clientgui/res/templates/
        openclicon.png
    lib/
        diagnostics.cpp

Rom    15 May 2012
    - Normalize the way E@H returns OpenCL information to the client
        software.
        
    doc/
        get_platforms.inc

Rom    15 May 2012
    - MGR: Fix the icon we use to represent OpenCL.
    - client: Update the stock all_project_list.xml file we send out
        with new client software.

    clientgui/res/
        openclicon.xpm
    win_build/installerv2/redist/
        all_projects_list.xml

David  18 May 2012
    - client/API/vboxwrapper: add an optional <vbox_window> element
        to cc_config.xml.
        If present, run VMs without the --headless option.

    client/
        app_start.cpp
    lib/
        app_ipc.cpp,h
        cc_config.cpp,h
    samples/vboxwrapper/
        vbox.cpp,h
        vboxwrapper.cpp

David  18 May 2012
    - web: show "run beta apps?" project pref if the project
        has any beta applications
        (don't require project to specify this in project_specific_prefs.inc)

    html/project.sample/
        project_specific_prefs.inc

David  18 May 2012
    - web: fix PHP warnings by calling date_default_timezone_set().
        Set it to the timezone specified by the constant TIMEZONE
        (in project.inc) or "UTC" if none specified.
    - web: fix bugs in submit.php
    html/
        inc/
            submit_util.inc
            util.inc
        user/
            submit.php

David  18 May 2012
    - scheduler: add a lot more debug messages if <debug_array> is set

    sched/
        sched_array.cpp

David  18 May 2012
    - vboxwrapper: don't run headful if client is sandboxed (it won't work).
    samples/vboxwrapper/
        vboxwrapper.cpp

Rom    18 May 2012
    - MGR: Remove the visuals in the wizard for multi-core and opencl.  This area
        will get a bunch of work in a future commit.
        
    clientgui/
        ProjectInfoPage.cpp, .h
    clientgui/res/
        openclicon.xpm (deleted)
        multicore.xpm (deleted)
     
David  18 May 2012
    - client: show <vbox_window> option in log,
        and give warning if include this while in sandbox mode
    - web: update URLs for BOINCstats
    html/inc/
        stats_sites.inc
    client/
        log_flags.cpp

Charlie 18 May 2012
    - VBOX: Fix Mac compiler warnings (deprecated conversion from string constant 
        to 'char*').

    samples/vboxwrapper/
        vboxwrapper.cpp

Rom    18 May 2012
    - MGR: Fix build breaks
    
    clientgui/
        AccountManagerInfoPage.cpp
    clientgui/
        ProjectListCtrl.cpp, .h

David  20 May 2012
    - API: add boinc_network_usage();
        lets an application report its network usage to BOINC,
        and hence take it into account with monthly limits etc.
    - API: get rid of deprecated boinc_ops_per_cpu_sec(),
        boinc_ops_cumulative(), and
        boinc_set_credit_claim();
    - admin web: update manage_apps.php;
        add the ability to set homogeneous app version

    html/ops/
        manage_apps.php
    api/
        boinc_api.cpp,h

Rom    21 May 2012
    - MGR: Fix menu redraw issue under Ubuntu's new interface.
      fixes #1180
      (From Huibert)

    clientgui/
        AdvancedFrame.cpp

David  22 May 2012
    - add script to repair damaged user.global_prefs fields
    - compile warning fixes

    sched/
        delete_file.cpp
        sched_version.cpp
    html/ops/
        fix_venue.php
    vda/
        stats.cpp
        ssim.php

David  23 May 2012
    - server daemons: add daemon_sleep(n), which sleeps for n secs
        but checks for the "stop_daemons" trigger file every 1 sec.
        Use this instead of sleep() in daemons.
        This will speed up bin/stop.

    sched/
        sched_util.cpp,h
        (daemons).cpp

David  23 May 2012
    - get rid of BOINC_SOCKLEN_T stuff; just use socklen_t

    configure.ac
    lib/
        network.h

David  23 May 2012
    - server: make fix_venue.php work faster

    html/
        inc/
            boinc_db.inc
        ops/
            fix_venue.php

David  25 May 2012
    - server: rename fix_venue.php to fix_prefs.php

    html/ops/
        fix_prefs.php

David  25 May 2012
    - admin web: add a function for "revalidating" a given set of jobs.
        This reruns validation for instances that are successful
        but marked as invalid or inconclusive.
        Use this if you changed your validator to be more permissive,
        and you want to grant credit for instances that were
        originally marked as invalid.

    html/ops/
        index.php
        revalidate.php (new)
    db/
        boinc_db_types.h

David  25 May 2012
    - fix typos in two PHP scripts

    html/ops/
        repair_forums.php
        notify.php

David  26 May 2012
    - web: don't truncate thread titles

    html/user/
        forum_forum.php

David  26 May 2012
    - web: increase size of thread title input field to 80

    html/user/
        team_forum.php
        forum_post.php

David  26 May 2012
    - web RPC: make am_set_info available by POST as well as GET,
        since its args can be too long for a URL

    html/user/
        am_set_info.php

David  26 May 2012
    - admin web: fix revalidated script

    html/ops/
        revalidate.cpp

David  26 May 2012
    - web RPC: in am_set_info, if both GET and POST args are present, use POST

    html/user/
        am_set_info.php

David  28 May 2012
    - user web: job submission home page has
        1) links to job submission pages for relevant apps
        2) links to Admin pages for relevant apps

    html/user/
        submit.php

David  28 May 2012
    - fix tools/manage_privileges script

    html/
        inc/
            submit_db.inc
        user/
            manage_project.inc

David  28 May 2012
    - web: allow users with admin privileges to abort or retire batches

    html/user/
        submit.php

David  28 May 2012
    - feeder: if we purge a stale job, and it's commited to an HR class,
        un-commit it since that's probably the reason why it's stuck
        (and it may never get unstuck)

    sched/
        feeder.cpp

Rom    30 May 2012
    - MGR: Wait until there is valid data in the list box before processing
        the OnProjectSelected() event.
        
    clientgui/
        ProjectInfoPage.cpp

David  3 June 2012
    - scheduler: various fixes to plan_class_spec.cpp; from Bernd
    - admin web: don't include the project's stylesheet,
        which may assume a layout not used by admin pages

    sched/
        plan_class_spec.cpp
    html/inc/
        util.inc
        util_ops.inc

David  4 June 2012
    - scheduler: if we truncate the # of results accepted
        (like we're doing in SETI@home)
        don't resend lost results since we don't know what they are

    sched/
        handle_request.cpp
        sched_types.cpp,h

David  4 June 2012
    - DB: add project_state and description fields to batch table.
        Both are for use by project.
    - job submission file sandbox: don't delete physical file
        when delete sandbox entry.
        We'll have to figure out how to garbage-collect physical files.
    - LAMMPS job submission:
        use the 50th-percentile host,not 0th

    html/
        user/
            sandbox.php
            lammps.php
        ops/
            db_update.php
    db/
        schema.sql
        boinc_db_types.h

Wenjing  5 June 2012
    - web: don't allow a sandbox file to be deleted if it's used
        by an in-progress batch.
        NOTE: this logic checks only 1 job from the batch,
        so it assumes that all jobs have the same input files.

    html/
        user/
            sandbox.php
        inc/
            sandbox.inc

David  5 June 2012
    - scheduler: debug plan_class_spec a little.
        Add an #ifdef'd main program in plan_class_spec.cpp,
        and a makefile, for testing purposes.

    sched/
        sched_main.cpp
        plan_class_spec.cpp,h
        makefile_plan_class_spec
        sched_types.cpp
    client/
        coproc_detect.cpp
    lib/
        coproc.cpp

David  5 June 2012
    - scheduler: add Vbox stuff to plan_class_spec

    sched/
        plan_class_spec.cpp,h

David  5 June 2012
    - scheduler: add example plan_class_spec.xml
    - scheduler: change gpu_type from "ati" to "amd" in plan class spec

    sched/
        plan_class_spec.cpp
        plan_class_spec.xml.sample

Bernd  6 Jun 2012
    - scheduler: moved client version check to be last of the checks
        performed for a particular app version. It is not necessary
        to tell the user to upgrade the client just to suite the needs of
        a particular app version if this app version requires resources
        that the host dosn't have or didn't request work for.

        Actually I don't think it's good to tell the user he needs to
        upgrade the client if there is only one particular app version
        that requires a more recent one than he has. I think that the
        purpose of the g_wreq->outdated_client flag was checking the
        min_core_version in the project configuration. For this the 
        flag and the notice/message that it triggers is still ok. But
        in the app version checks setting this flag leads to misleading
        messages in most cases, so I commented that out for now.

        I'm not sure, though, that both of these measurements are needed.

    sched/
        sched_version.cpp

Bernd  6 Jun 2012
    - scheduler: minor fixes to plan_clas_spec:
      - consistently accept both 'ati' and 'amd' for AMD/ATI plan classes
      - in OpenCL plan classes always use device memory reported via OpenCL
        (might be different e.g. from what's available/reported via CUDA)
      - comment formatting

    sched/
        plan_class_spec.cpp

David  6 June 2012
    - scheduler: add <need_ati_libs> option

    sched/
        plan_class_spec.cpp,h
        handle_request.cpp
        sched_config.h

David  7 June 2012
    - scheduler: add max_results_accepted config option.
        Limits mem usage by the scheduler, can prevent crashes.

    sched/
        sched_config.cpp,h
        sched_types.cpp

David  7 June 2012
    - scheduler: add <min_cal_target>, <max_cal_target>
        to plan class XML spec options;
        lets you specify a range of ATI GPU models to use

    sched/
        plan_class.cpp,h
        sched_config.cpp,h

David  9 June 2012
    - fixes of various (non-critical) fd and memory leaks.
        Fixes #1188.  From Julien.
    - fix bugs in setting scheduler output buffer size
    - code formatting

    client/
        hostinfo_unix_test.cpp
    apps/
        concat.cpp
    api/
        make_app_icon_h.cpp
        texfont.cpp
        texture.cpp
        tgalib.cpp
    vda/
        vdad.cpp
        vda_policy.cpp
    sched/
        sched_driver.cpp
        feeder.cpp
        credit_test.cpp
        sched_main.cpp

Bernd  10 Jun 2012
    - API: fix for C-mode compilation of boinc_api.h
        moved app_ipc.h inclusion outside __cplusplus
        since it contains important C mode prototypes
        (boinc_resolve_filename() etc.)

    api/
        boinc_api.h

Bernd  11 Jun 2012
    - API: fix #2 for C-mode compilation of boinc_api.h
        app_ipc.h didn't cleanly compile in C-mode either,
        had to fix this, too.

    lib/
        app_ipc.h

Rom    12 Jun 2012
    - Make things build again on Mac OSX 10.8 using the autoconf
        framework.
      (From Oliver Bock)
      
    /
        configure.ac  

David  13 June 2012
    - scheduler: remove <dont_use_dcf/> from scheduler reply for now;
        the 7.0.25 client has a bug that causes jobs
        to run EDF if this flag is present.

    sched/
        sched_types.cpp

Charlie 13 June 2012
    - client: Reverse my logic of 16 Feb 2012: we now always use GPU model 
        name determined from CAL TargetID (if available) for OpenCL model  
        name of ATI / AMD GPUs because (we believe) it is more user-friendly.

    client/
        coproc_detect.cpp

David  14 June 2012
    - scheduler: send <dont_use_dcf> only if client is 7.0.28 or later.

    sched/
        sched_types.cpp
    vda/
        ssim.cpp
        vdad.cpp
        des.h
        stats.cpp,h
        vda_lib.cpp,h

David  14 June 2012
    - client: 
        - added the definitions for the new Windows 7/2008r2 preSP1
            and Windows 8/2012 SKUs based on the winnt.h
            from the Windows 8 RC SKD (also added as proof)
        - added the detection for some more Windows SKU
        - Updates provided by Teamwork of Planet3Dnow.de to coproc_detect.cpp
            - added CAL_TARGET_ID 21 as : AMD Radeon HD 78x0 series (Pitcairn)
        (from [P3D] Crashtest)

    client/
        coproc_detect.cpp
        hostinfo_win.cpp

David  14 June 2012
    - client, GUI RPC: detect and export the PCI bus, device, and domain #s.
    - scheduler: increase #GPU limit from 8 to 64

    lib/
        coproc.cpp,h
    client/
        coproc_detect.cpp
    sched/
        sched_send.cpp
    vda/
        vda_lib.cpp,h
        ssim.cpp

Charlie 16 June 2012
    - Mac installer: Fix bugs I introduced on May 3 and May 6.

    mac_installer/
        PostInstall.cpp
        Uninstall.cpp

Charlie 18 June 2012
    - Mac installer: Create or delete Login Items and set screensaver 
        properly when installing for multiple users on OS 10.7, 10.8.

    mac_installer/
        PostInstall.cpp
        Uninstall.cpp

David  18 June 2012
    - client: it's possible for a host to get app versions for
        a given app that have different platforms and different version #s.
        The client was erroneously deleting the one w/ the lower version
        when it was no longer in use.
        Fix: in garbage collection, consider one version to supercede another
        only if they have the same platform

    client/
        client_state.cpp
    vda/
        ssim.cpp

David  18 June 2012
    - client: split GPU detection code into separate files

    lib/
        coproc.h
    client/
        gpu.h (new)
        gpu_opencl.cpp (new)
        gpu_amd.cpp (new)
        gpu_nvidia.cpp (new)
        coproc_detect.cpp
        Makefile.am

David  18 June 2012
    - client: rename coproc_detect.cpp to gpu_detect.cpp

    client/
        gpu_detect.cpp,h
        Makefile.am

David  18 June 2012
    - client: compile fixes

    client/
        gpu_opencl.cpp
        gpu_amd.cpp
        gpu_nvidia.cpp
    lib/
        coproc.cpp,h

David  18 June 2012
    - win compile fixes

    client/
        gpu_nvidia.cpp
    win_build/
        boinc_cli.vcproj

David  18 June 2012
    - client: for NVIDIA, make an array of the PCI info
        for all usable GPUs

    client/
        gpu_nvidia.cpp

David  19 June 2012
    - client: AMD GPU detection addition (from [P3D] Crashtest)

    client/
        gpu_amd.cpp

Charlie 20 June 2012
    - Mac: Update XCode project with new source files.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  20 June 2012
    - fix configure error on Linux.
        I think the AC_PROG_OBJCXX should be limited to Mac somehow

    configure.ac

David  20 June 2012
    - web: fix BOINCStats link for host details

    html/inc/
        stats_sites.inc

David  20 June 2012
    - API, Linux: increase timer thread stack size from 16K to 32K.
        Apparently new use of MAXPATHLEN can cause overflow.
        Fixes #1191

    api/
        boinc_api.cpp

Charlie 21 June 2012
    - Mac: Fix displayed names of BOINC installer, uninstaller, etc.

    clientgui/
        mac/
            SetVersion.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  21 June 2012
    - web: server status page should show elapsed time, not CPU time

    html/user/
        server_status.php

Charlie 22 June 2012
    - Mac: Code sign the BOINC installer and uninstaller if we have a 
        valid code signing identity.  Code signing using a registered 
        Apple Developer ID is necessary for GateKeeper with default 
        settings to allow running downloaded applications under OS 10.8.
    
    mac_installer/
        release_boinc.sh

David  22 June 2012
    - client: AMD GPU detection addition (from [P3D] Crashtest)

    client/
        gpu_amd.cpp

David  25 June 2012
    - scheduler: add support for Intel GPUs, and restructure things
        to make it easier to add other GPU types in the future

    sched/
        sched_customize.cpp,h
        sched_shmem.cpp
        plan_class_spec.cpp
        sched_types.cpp,h
        sched_version.cpp
        sched_send.cpp
    lib/
        coproc.cpp,h

David  25 June 2012
    - Unix build: fix typo

    configure.ac

David  25 June 2012
    - Unix build: fix for Mac OS X (from Oliver)

    configure.ac

Charlie 26 June 2012
    - Mac client: Upgrade to curl 7.26.60 and c-ares 1.9.1.
    
     mac_build/
        boinc.xcodeproj/
            project.pbxproj
        buildc_ares.sh
        buildcurl.sh
        HowToBuildBOINC_XCode.rtf
        setupforBOINC.sh

Charlie 26 June 2012
    - Mac client: build libssl.a and libcrypto.a from openssl 1.0.1c and 
        do static links instead of a dynamic links with Apple-supplied 
        dynamic libraries.
    
     mac_build/
        boinc.xcodeproj/
            project.pbxproj
        buildopenssl.sh (new)
        HowToBuildBOINC_XCode.rtf
        setupforBOINC.sh

David  26 June 2012
    - client: keep track of the fraction of time that
        1) a network connection is available and
        2) network communication is allowed and
        3) CPU computation is allowed
    - If an app version is marked as needs_network,
        use the above fraction in estimating its rate of progress
    - replace "core client" with "client" in comments.
    - scheduler: message tweaks

    client/
        client_state.h
        cs_files.cpp
        rr_sim.cpp
        app_start.cpp
        gui_rpc_server_ops.cpp
        boinc_cmd.cpp
        app_control.cpp
        time_state.cpp,h
        boinc_log.cpp
        sandbox.cpp
        check_state.cpp
        main.cpp
        work_fetch.cpp
        gui_rpc_server.cpp
    sched/
        sched_send.cpp
    lib/
        coproc.cpp

David  26 June 2012
    - Unix build tweaks.  Fixes #1193 (I think)

    m4/
        boinc_check_fcgi.m4
        libcurl.m4
        

David  26 June 2012
    - Unix build: remove "if" around AC_PROG_OBJCXX;
        apparently this is needed for Gentoo build.
        You may need a recent automake for this to work.
        Fixes #1193.

    configure.ac

David  26 June 2012
    - Unix build tweak

    configure.ac

Charlie 28 June 2012
    - Mac client: Update wxMac build script for partial compatibility 
        with OS 10.8 and XCode 4.5. See comments in script for details.

     mac_build/
        buildWxMac.sh

David  28 June 2012
    - client: when estimating FLOPS for an anonymous-platform app version
        for which no estimate has been supplied by user,
        use (CPU speed)*(cpu_usage + 10*gpu_usage)
        (add the 10*)

    lib/
        common_defs.h
        str_util.cpp
    client/
        client_state.cpp
    sched/
        transitioner.cpp

David  28 June 2012
    - web: when showing a batch, recompute and update its fraction done
    - feeder: don't enumerate results for WUs with nonzero error_mask
    - scheduler: in slow_check(), make sure the WU error_mask is still zero

    html/user/
        submit.php
    db/
        boinc_db.cpp
    sched/
        sched_array.cpp

David  29 June 2012
    - client: add missing end tag for <pci_info>.  Doh!
    - validator: add some sanity-checking for credit,
        to prevent granting 1e38 credit.
        max_granted_credit now defaults to the equivalent of 1 TeraFLOP-year.
        Instances that exceed this are not counted in the credit
        calculation, and a critical-mode log message is written
    - wrapper: remove wall_cpu_time; not used anymore

    html/user/
        host_app_versions.cpp
    samples/wrapper/
        wrapper.cpp
    sched/
        validator.cpp
        credit.cpp
    lib/
        coproc.cpp

David  1 July 2012
    - When the client makes a scheduler RPC without requesting work,
        and there's a simple reason
        (e.g. the project is suspended, no-new-tasks, downloads stalled, etc.)
        show it in the event lot.
        If the reason is more complex, don't try to explain.

    client/
        work_fetch.cpp,h
        scheduler_op.cpp

David  2 July 2012
    - client: in the job scheduler, there's a check to prevent
        overcommitting the CPUs if an MT is scheduled.
        Skip this check for GPU jobs.

    client/
        cpu_sched.cpp

David  2 July 2012
    - Compile fixes for Fedora core 17.  From Christian B.  Fixes #1194.
    - Fix various #include issues.

    CODING STYLE LAW (minimal inclusion principle):
        If foo.cpp requires <blah.h>,
        #include <blah.h> in foo.cpp, NOT foo.h

    various/
        various

David  2 July 2012
    - more code cleanup

    vda/
        ssim.cpp
    sched/
        plan_class_spec.cpp
    lib/
        various

David  2 July 2012
    - Unix build: fix problem with Debian automated builds; from Steffen M

    configure.ac

Charlie 3 July 2012
    - Mac: fix build break.

    client/
        cpu_sched.cpp

Charlie 3 July 2012
    - Mac client: Update Xcode project for compatibility with Xcode 4.3.2 
        and Xcode 4.5.

     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  3 July 2012
    - Client (Win): in file_size(), use _stat64() instead of stat().
        Otherwise it doesn't work for files >= 2GB
    - Client: TIME_STATS::trim_stats_log() wasn't working because
        it's called in the constructor of TIME_STATS,
        which is called before we've done a chdir() to the data dir.

    Note: for this reason, no disk access should be done in constructors
    of global objects.  A quick scan found no instances of this.

    client/
        client_state.cpp
        time_stats.cpp,h
    lib/
        filesys.cpp

Charlie 5 July 2012
    - Mac: update script which builds our installer to work with Xcode 4.3 
        for Lion and later.  Because PackageMaker is now distributed 
        separately from Xcode, we emulate it using low-level tools.
        
    mac_installer/
        release_boinc.sh

David  5 July 2012
    - client: remove "device" entry from CUDA_DEVICE_PROP,
        and change types of mem-size fields from int to double.
        These fields are size_t in NVIDIA's version of this;
        however, cuDeviceGetAttribute() returns them as int,
        so I don't see where this makes any difference.
    - client: fix bug in handling of <no_rsc_apps> element.
    - scheduler: message tweaks.
        Note: [foo] means that the message is enabled by <debug_foo>.


    lib/
        coproc.cpp,h
    client/
        gui_nvidia.cpp
        work_fetch.cpp
        scheduler_op.cpp
    db/
        boinc_db_types.h
        boind_db.h
    vda/
        sched_vda.cpp
    sched/
        plan_class_spec.cpp
        sched_types.cpp

Charlie 5 July 2012
    - Mac: update build scripts to work with Xcode 4.3 for Lion and later.  
        Xcode and the Mac OS X SDKs are no longer installed at fixed locations.
        
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
        buildc_ares.sh
        buildcurl.sh
        buildopenssl.sh
        BuildMacBOINC.sh
        buildWxMac.sh
        HowToBuildBOINC_XCode.rtf
        
David  7 July 2012
    - distributed storage: move chunk_size to VDA_FILE.
        Add some missing code.

    sched/
        sched_types.cpp,h
    db/
        boinc_db_types.h
        boinc_db.cpp
        schema_vda.sql
    vda/
        vda_lib.cpp,h
        vda.cpp
        vdad.cpp
        ssim.cpp
        sched_vda.cpp
    html/user/img/
        star.gif

Charlie 10 July 2012
    - Mac: update build scripts, source files and Xcode project to allow 
        building with Xcode 4.3 under OS 10.7.x Lion and Xcode 4.5 under
        OS 10.8 Mountain Lion.
        
    clientgui/
        mac/
            MacBitmapCompboBox.cpp
            MacSysMenu.cpp
    clientscr/
        Mac_Saver_ModuleView.m
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
        buildc_ares.sh
        buildcurl.sh
        buildopenssl.sh
        BuildMacBOINC.sh
        HowToBuildBOINC_XCode.rtf

David  10 July 2012
    - Unix: include db/boinc_db_types.h in installed headers
    - client: small code cleanup, no functional change

    db/
        Makefile.am
    client/
        time_stats.cpp

David  10 July 2012
    - web: show job status correctly for new exit codes

    html/inc/
        result.inc

David  10 July 2012
    - user web: add "posts per page" pref for message boards;
        get rid of existing funky page-limit prefs

    html/
        inc/
            forum.inc
        user/
            edit_forum_preferences*.php
            forum_reply.php
            forum_thread.php

Charlie 11 July 2012
    - Mac: update sample code to allow building with Xcode 4.3 and 
        to eliminate compiler warnings.

    samples/
        example_app/
            MakeMacExample.sh
            Makefile_mac
            Makefile_mac2
            uc2_graphics.cpp
        mac_build/
            UpperCase2.xcodeproj/
                project.pbxproj
        vboxwrapper/
            BuildMacVboxWrapper.sh (new)
            Makefile_mac (new)
            vboxwrapper.xcodeproj/
                project.pbxproj
        wrapper/
            BuildMacWrapper.sh

David  11 July 2012
    - web: improve forum pagination

    client/
        client_msgs.cpp
    html/
        inc/
            forum.inc
        user/
            forum_forum.php
            forum_reply.php
            forum_threads.php

David  11 July 2012
    - web: forum fixes
    
    html/
        inc/
            forum.inc
        user/
            forum_forum.php

Charlie 12 July 2012
    - Mac: update sample code to allow building with Xcode 4.4 GM seed
        under OS 10.8 GM seed.

    samples/
        example_app/
            MakeMacExample.sh
        mac_build/
            UpperCase2.xcodeproj/
                project.pbxproj
        vboxwrapper/
            BuildMacVboxWrapper.sh
            vboxwrapper.xcodeproj/
                project.pbxproj
        wrapper/
            BuildMacWrapper.sh

David  12 July 2012
    - web: make "jump to first unread" work with pagination

    html/
        inc/
            forum.inc
        user/
            forum_thread.php

David  12 July 2012
    - web: make links to specific posts work with pagination

    html/
        inc/
            forum.inc
        user/
            forum_thread.php

David  12 July 2012
    - web: don't try to update thread last-read-time if not logged in

    html/inc/
        forum.inc

David  13 July 2012
    - web: when posting to a thread, show a page of its most recent posts 
    - feeder: add --by_batch option: interleaves jobs from different batches.
        From Jack Harris.

    sched/
        feeder.cpp
    html/user/
        forum_reply.php
        forum_user_posts.php

David  13 July 2012
    - web: after post to a thread, show a page of the most recent posts
        (but don't change user's sort prefs)

    html/user/
        forum_thread.php
        forum_reply.php

David  13 July 2012
    - web: use &middot; instead of | as a separator

    html/inc/
        result.inc

David  16 July 2012
    - lib: treat MINGW32 like CYGWIN32 (in 1 place - should do everywhere?)
        from Oliver

    lib/
        filesys.cpp
    db/
        schema_vda.sql
    sched/
        Makefile.am
    html/ops/
        manage_apps.php
    vda/
        sched_vda.cpp

David  16 July 2012
    - web: make "jump to first unread" work for threads that
        haven't been viewed before

    html/inc/
        forum.inc

Charlie 17 July 2012
    - Mac: Minor corrections to documentation and sample code.
    
    mac_build/
        HowToBuildBOINC_XCode.rtf
    samples/
        example_app/
            Makefile_mac2

David  17 July 2012
    - compile fix (from Oliver)

    api/
        boinc_api.h

David  17 July 2012
    - client: delete sticky files when reset project

    client/
        client_state.cpp

David  17 July 2012
    - client: if we get a job for which a GPU is missing,
        keep the RESULT record so that we can report it to the scheduler.
        Otherwise we'll keep getting the same job if the project has
        <resend_lost_results> set.

    client/
        cs_scheduler.cpp

Charlie 18 July 2012
    - lib: Adjust #include files as requested by Oliver Bock.
    
    lib/
        procinfo_mac.cpp


Bernd  18 July 2012
    - API: fix Makefile.mingw
        - allow to augment CFLAGS and CXXFLAGS
        - allow to at least set DEBUG flags externally, such that
            backtrace flags can be used
        - minor textual fixes (whitespace error, typo in comment)

    lib/
        Makefile.mingw

Rom    18 July 2012
    - client: Re-introduce the WM_QUERYENDSESSION window message handler to
        the power management window proc, it was removed during one of the Win9x
        code scrubs.  When we see it, inform the client it is time to shutdown.

    client/
        sysmon_win.cpp

David  21 July 2012
    - lib: fix typo

    lib/
        coproc.cpp

David  21 July 2012
    - client simulator: fix build breaks

    client/
        makefile_sim
        sim.cpp
        sim_util.cpp

David  21 July 2012
    - client: don't request work for backup project for a processor type
        unless there are idle instances of that type
        
    client/
        work_fetch.cpp

David  23 July 2012
    - volunteer storage: implement "vda status" command

    vda/
        vda_lib.cpp,h
        vda_lib2.cpp (new)
        vdad.cpp
        vda.cpp
        Makefile.am
    db/
        boinc_db_types.h

David  23 July 2012
    - client: improve "new version available" notice

    client/
        current_version.cpp

David  25 July 2012
    - volunteer data storage: intermediate checkin

    vda/
        vda.cpp
        ssim.cpp
        vdad.cpp
        sched_vda.cpp
        vda_lib2.cpp
    db/
        boinc_db_types.h
        boinc_db.cpp
        schema_vda.sql

Charlie 26 July 2012
    - Mac: fix a typo in build script.
    
     mac_build/
        setupForBOINC.sh

Charlie 27 July 2012
    - Mac: create build scripts for FreeType-2.4.10 and FTGL-2.1.3-rc5 
        libraries; eliminate extra output from wxMac build script.
    
     mac_build/
        buildfreetype.sh (new)
        buildFTGL.sh (new)
        buildWxMac.sh
        setupforBOINC.sh

Rom    30 July 2012
    - MGR: Use the same fix for the simple gui that we used on the advanced
        gui with regards to the menu on Ubuntu's interface.

    clientgui/
        sg_BoincSimpleFrame.cpp

David  1 Aug 2012
    - web: after post to a thread, show thread in user's chosen order
        instead of newest first.

    db/
        db_base.cpp,h
    html/
        inc/
            forum.inc
        user/
            forum_reply.php
    vda/
        vda_lib.cpp
        vdad.cpp
        sched_vda.cpp
        vda_lib2.cpp

David  1 Aug 2012
    - code cleanup: in foo.cpp, include foo.h first

    lib/
        *cpp

David  1 Aug 2012
    - use <cmath> instead of <math.h>.  Seems to be needed on Debian.

    sched/
        credit.cpp
        plan_class_spec.cpp
        sched_driver.cpp
        feeder.cpp
    vda/
        ssim.cpp

Charlie 1 Aug 2012
    - API, SCR: Switch from *.txf fonts to TrueType fonts in graphics 
        applications, ensuring that all related files have no licensing 
        issues.
        
    /
        COPYRIGHT
    api/
        gutil/cpp,.h
        ttfont.cpp,.h
        texfont.cpp,.h (deleted)
        texture.cpp,.h (deleted)
        txf_util.cpp,.h (deleted)
        txf/
            *.txf (deleted)
        ttf/
            courier_bold (deleted)
            helvetica (deleted)
            README (deleted)
            liberation-fonts-ttf-2.00.0/ (added)
                AUTHORS (added)
                CHANGELOG (added)
                LICENSE (added)
                README (added)
                *.ttf (added)
    clientscr/
        ss_app.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
    mac_installer/
        release_boinc.sh

Charlie 2 Aug 2012
    - Mac: Update scripts for building branded installers to allow 
        building with Xcode 4.3 under OS 10.7.x Lion; change names of 
        branded installers from "*macOSX_universal" to "*macOSX_i686" 
        since we no longer support PowerPC Macs.
        
    mac_installer/
        make_CharityEngine.sh
        make_GridRepublic.sh
        make_ProgThruProc.sh

David  2 Aug 2012
    - scheduler: compile fixes for FCGI

    sched/
        hr_info.cpp
    html/inc/
        forum.inc
    lib/
        util.cpp
        filesys.cpp

Rom    2 Aug 2012
    - SS: Update project files to use FreeType and FTGL on Windows.

    api/
        ttfont.cpp, .h
    clientscr/
        ss_app.cpp
    win_build/
        boinc_ss.vcproj
        libgraphics2.vcproj

Eric K  2 Aug 2012
    - scheduler, validator: Modified credit granting for "appox credit" 
      result to weight results by proximity to the average estimate. This 
      reduces the number of results that are granted extremely low credit 
      when a new app_version is released and (I hope) improves work/duration
      estimates by speeding up the convergence of app versions stats. I may
      try using this in lieu of low_average for normal result, but haven't yet.

Charlie 3 Aug 2012
    - Sample Graphics app: Switch from *.txf fonts to TrueType fonts.
    samples/
        example_app/
            MakeMacExample.sh
            Makefile_mac
            Makefile_mac2
            uc2_graphics.cpp
        mac_build/
            UpperCase2.xcodeproj/
                project.pbxproj

Rom    3 Aug 2012
    - VBOX: Do not perform the hardware virtualization check when the
        guest VM is 64-bit.  64-bit guest vms require hardware virtualization
        and should fail without it.
    - VBOX: Implement the <copy_to_shared/> directive in the vbox_job.xml file.
        if <copy_to_shared>init_data.xml</copy_to_shared> is set, the wrapper will
        copy the init_data.xml file to the shared directory before the VM is launched.
        
    samples/vboxwrapper/
        vbox.cpp
        vboxwrapper.cpp

David  3 Aug 2012
    - volunteer storage.  Seems to be working, at least in simulation

    vda/
        vda_lib2.cpp
        vda_lib.cpp,h
        stats.cpp
        ssim.cpp
        vdad.cpp

Rom    3 Aug 2012
    - WIN: Make the example graphics application build again.
    - WIN: Get rid of the linker warnings for both the default screensaver and
        the example graphics application

    win_build/
        boinc_ss.vcproj
        uc2_graphics.vcproj

David  3 Aug 2012
    - API: remove support for BMP and TGA image files;
        the code to parse these had no license info.
        Only JPEG is supported now.

    api/
        Makefile.am
        bmplib.cpp,h (removed)
        tgalib.cpp,h
        gutil.cpp

Charlie 3 Aug 2012
    - API: remove references to removed files bmplib.h and tgalib.h.
    
    api/
        gutil_text.cpp

Charlie 3 Aug 2012
    - Mac: Update build instructions and build script.

    mac_build/
        HowToBuildBOINC_XCode.rtf
        setupforBOINC.sh
    
David  3 Aug 2012
    - Client: initial checkin for Android version.  From Joachim Fritzsch.

    lib/
        common_defs.h
        prefs.cpp,h
        android_log.h (new)
        network.cpp
        shmem.h
        hostinfo.h
        str_util.cpp
        synch.cpp
    client/
        hostinfo_unix.cpp
        client_msgs.cpp
        cs_prefs.cpp
        main.cpp
        hostinfo_network.cpp

David  3 Aug 2012
    - client: other Android stuff, from Joachim

    client/
        cs_platforms.cpp
    lib/
        md5_file.cpp

David  3 Aug 2012
    - scheduler: fix message typo

    sched/
        sched_send.cpp

Rom    6 Aug 2012
    - WIN: Don't include the newer DBGHELP symbols in MinGW64.
        (From Oliver Bock)
        
    lib/
        stackwalker_imports.h

David  6 Aug 2012
    - client: fix error in runtime estimation for active tasks

    client/
        work_fetch.cpp

Rom    7 Aug 2012
    - MGR: Enforce the 0..10 day limit on the connect interval for the
        advanced preferences dialog.  At some point we should rename
        it.

    clientgui/
        DlgAdvPreferences.cpp

Rom    7 Aug 2012
    - API: Remove ttfont.cpp from Makefile.am.  Apps should include it
        in there Makefile as needed.

    api/
        Makefile.am

Rom    7 Aug 2012
    - WINSCR: Fix problem with the screensaver needlessly cycling in
        preview mode.  Ugh.

    clientscr/
        screensaver_win.cpp

David  7 Aug 2012
    - client: parse <network_wifi_only> in prefs
    - server: compile fix

    lib/
        prefs.cpp
    vda/
        vda.cpp
        ssim.cpp
        vdad.cpp
        vda_lib2.cpp

Charlie 7 Aug 2012
    - WIN: Remove reference to deleted tgalib.cpp file.

    win_build/
        libgraphics2.vcproj

David  8 Aug 2012
    - server: volunteer storage bug fixes.
        Note to self: jerasure's decoder program loops or crashs
            if there are no missing chunks.
    vda/
        vda_lib.cpp,h
        vda.cpp
        sched_vda.cpp
        vda_lib2.cpp
    db/
        boinc_db_types.h

David  8 Aug 2012
    - Client/manager: there was a bug because some code was writing
        "cpu" in XML, and other code was looking for "CPU".
        To fix this and prevent similar problems,
        processor type names are now encapsulated in proc_type_name_xml().
        Code should use this rather than having hard-wired names.
        Redefine: GPU_TYPE_* as macros that call proc_type_name_xml().

    client/
        client_types.cpp
        client_state.cpp
    clientgui/
        DlgItemProperties.cpp
    sched/
        sched_version.cpp
    lib/
        gui_rpc_client_ops.cpp
        coproc.cpp,h

Charlie 8 Aug 2012
    - MGR: Fix build break.
    
     clientgui/
        DlgItemProperties.cpp

Eric K  8 Aug 2012
    - LIB: Added conditional printf to the message log class, since most 
      scheduler log output seems to be conditional on config parameters 
      such as config.debug_version_select.

    lib/
        msg_log.{h.cpp}

Eric K  8 Aug 2012
    - Credit is more stable when pegged_avg() is used.
    - When a normal and an approx result are compared the normal result 
      now gets double weight in a pegged_avg() with any approx results. 
      "Normal mode" GPU results are frequently resulting in bad credit 
      values for yet undetermined reasons. Since GPUs are so fast, there 
      can be a lot of bad values in a short time. Including the prior 
      average and another result even seems to prevent this in many case.
    - Replaced many of the if { msg_log.printf } with msg_log.cond_printf()
    - Accidentally changed some of the formatting when trying a new editor 
      that apparently autoformats. Sorry for the extra diff lines.
    - There's a problem with pfc calculation for hosts whose credit 
      calculation fails the sanity check. This has been a problem for 
      a long time. Because the result fails the sanity check, the 
      host_app_version pfc is never updated. Because hav.pfc is never 
      updated, the credit calculation continues to be wrong. 
    - This change is subject to review. Use with caution.

    sched/
        credit.cpp
   
David  10 Aug 2012
    - client: when we're making a scheduler RPC
        for a reason other than work fetch,
        and we're deciding whether to piggyback a work request,
        skip the checks for hysteresis (buffer < min)
        and for per-resource backoff time.
        These checks are there only to limit the rate of RPCs,
        which is not relevant since we're doing one any.

        This fixes a bug where a project w/ sporadic jobs specifies
        a next_rpc_delay to ensure regular polling from clients.
        When these polls occur they should request work regardless of backoff.

    client/
        work_fetch.cpp,h

David  10 Aug 2012
    - client: tweak to the above: never ask for work if buffer > max.
        This is needed to prevent projects that use next_rpc_delay
        from queuing unbounded work.

    client/
        work_fetch.cpp

David  10 Aug 2012
    - API: add boinc_set_min_checkpoint_period(int).
        Lets application specify a min checkpoint interval.
        The actual min checkpoint interval is the max of this
        and the user-specified pref for min disk interval.

    api/
        boinc_api.cpp,h

David  10 Aug 2012
    - server: fix bug in restrict_wu_to_user() that caused it
        to go into infinite loop

    sched/
        sched_util.cpp

David  10 Aug 2012
    - client: Android-related tweaks, from Joachim

    client/
        main.cpp
    lib/
        synch.cpp
        android_log.h

David  10 Aug 2012
    - lib: switch include order to the way it was (general to specific).
        Should fix MinGW compile

    lib/
        *.cpp

David  10 Aug 2012
    - server: compile fix

    lib/
        synch.cpp

David  11 Aug 2012
    - db_purge: fix typo that cause bad DB query when using assignments

    sched/
        db_purge.cpp
    vda/
        vda.cpp
        vda_lib.cpp,h
        vda_lib2.cpp
        vda_policy.cpp
        ssim.cpp

David  13 Aug 2012
    - client: treat all 4xx HTTP errors as permanent
    - code cleanup
    - API: increase a buffer in timer_handler() from 256 to 512.

    sched/
        credit.cpp
    lib/
        msg_log.cpp,h
    client/
        http_curl.cpp
    api/
        boinc_api.cpp

Rom    13 Aug 2012
    - WINSETUP: Provide the ability to create the acct_mgr_login.xml from
        from the command line.  Useful for mass deployments within companies
        and charities.

    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        boinccas95.def
        boinccas95.vcproj
        CACreateAcctMgrLoginFile.cpp, .h
        CACreateProjectInitFile.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  13 Aug 2012
    - volunteer storage stuff

    vda/
        vda_lib.cpp,h
        ssim.cpp
        sched_vda.cpp
        vda_lib2.cpp
    client/
        client_types.h
    lib/
        common_defs.h

Charlie 14 Aug 2012
    - Mac installer: Fixes for short (posix) user names containing spaces.
    
    mac_installer/
        PostInstall.cpp
        release_boinc.sh
        Uninstall.cpp

David  15 Aug 2012
    - file upload handler: add an #ifdef for disabling locking of files
        while writing to them.
        It's not clear to me that this locking is beneficial,
        and it may be causing filesystem problems at WCG
    - volunteer storage stuff

    vda/
        vda_lib.cpp,h
        vda.cpp
        ssim.cpp
        vdad.cpp
        vda_lib2.cpp
    db/
        boinc_db_types.h
        boinc_db.cpp
        schema_vda.sql
    sched/
        file_upload_handler.cpp

David  16 Aug 2012
    - scheduler: if sending GPU description to pre-7.0 client,
        call it CUDA instead of NVIDIA

    sched/
        sched_types.cpp
    db/
        boinc_db.cpp
    vda/
        vda.cpp
        sched_vda.cpp
        vda_lib2.cpp

David  17 Aug 2012
    - volunteer storage: various

    vda/
        vda.cpp
        vdad.cpp
        sched_vda.cpp
        vda_lib2.cpp
        vda_lib.h

David  18 Aug 2012
    - client: if a project has excluded GPUs of a given type,
        allow it to fetch work of that type if the # of runnable
        jobs it <= the # of non-excluded instances (rather than 0).

    client/
        work_fetch.cpp,h
        rr_sim.cpp

David  18 Aug 2012
    - file upload handler:
        Do first read from socket before opening the disk file
        (an attempt to fix filesystem lockups on WCG).
        Increase buffer size from 16KB to 256KB.

    sched/
        file_upload_handler.cpp

Charlie 20 Aug 2012
    - client: If OpenCL detection gets an error for a platform or device, 
        finish detection of the remaining platforms and / or devices.
        Move OpenCL memory size workaround back into OpenCL source file. 
        
    client/
        gpu_opencl.cpp
        gpu_amd.cpp
    lib/
        coproc.h

David  20 Aug 2012
    - client: print log msgs (enabled by task_debug) if the client
        times out on quitting or aborting a task, and has to kill it.
    - volunteer storage: bug fixes

    vda/
        sched_vda.cpp
        vda_lib2.cpp
    client/
        app_control.cpp

David  20 Aug 2012
    - client: take GPU exclusions into account when making
        initial work request to a project
    - client: put some casts to double in NVIDIA detect code.
        Shouldn't make any difference.
    - volunteer storage: truncate file to right size after retrieval

    client/
        work_fetch.cpp,h
        gpu_nvidia.cpp
        scheduler_op.cpp
    vda/
        vdad.cpp
        vda_lib2.dpp

David  21 Aug 2012
    - client: change the way project disk share is computed.
        - Allow projects to report "desired disk usage" (DDU).
            If the client learns that a project wants disk space,
            it can shrink the allocation to other projects.
        - Base share computation on DDU rather than disk usage.
        - Introduce the notion of "disk resource share".
            This is defined (somewhat arbitrarily) as resource share
            plus 1/10 of the largest resource share.
            This is intended to ensure that even zero-share projects
            get enough disk space to store app versions and data files;
            otherwise they wouldn't be able to compute.
    - server: use host.d_boinc_max (which wasn't being used)
        to start d_project_share reported by client.
    - volunteer storage: change the way hosts are allocated to chunks.
        Allow hosts to store several chunks of the same file, if needed

    vda/
        vda_lib2.cpp
        vda_lib.h
    client/
        project.cpp,h
        client_state.h
        cs_prefs.cpp
        scheduler_op.cpp
    db/
        boinc_db_types.h
    sched/
        sched_types.h

David  22 Aug 2012
    - file_upload_handler: bug fix
    - volunteer storage: bug fixes

    vda/
        vda_lib2.cpp
        vda_lib.h
    sched/
        file_upload_handler.cpp

Rom    22 Aug 2012
    - client: streamline the console detach process under Windows.
    
    client/
        cs_cmdline.cpp
        main.cpp

Eric K 23 Aug 2012
    - build environment:  fixed bug in generate_svn_version.sh that generated
        incorrect output on unix systems that don't synchronize writes to the
        same file from opposite sides of a pipe.
    /
        generate_svn_version.sh

David  24 Aug 2012
    - volunteer storage: fix the way that hosts are classified as alive/dead
        - add a config item vda_host_timeout.
            A host that hasn't done a scheduler RPC for this long
            is considered dead.
        - a host that's not running a version 7+ client is considered dead
        - host.cpu_efficiency (an otherwise unused field) is used
            as a flag for dead hosts
        - the scheduler clears the flag if the client is v7+
        - vdad sets the flag for hosts where last RPC is old
        - before choosing a host for chunk download,
            vdad checks its client version.

    db/
        boinc_db_types.h
    vda/
        vda_lib.cpp,h
        vda_lib2.cpp
        vdad.cpp
        sched_vda.cpp
    sched/
        sched_config.cpp,h

David  24 Aug 2012
    - server: add support for having a mixture of CPU-intensive
        and non-CPU-intensive applications.
        An app can be specified as non-CPU-intensive in project.xml,
        and this attribute can be set or cleared using the admin web interface.
        Note: support for this was added to the client in 2011,
        but we didn't add server-side support at that time.
        This change is in 6.12 and later clients.

    py/Boinc/
        database.py
    vda/
        vda_lib.cpp,h
    db/
        boinc_db_types.h
        boinc_db.cpp
    db/
        schema.sql
    sched/
        sched_types.cpp
    html/ops/
        db_update.php
        manage_apps.php

David  26 Aug 2012
    - server: compile fix
    - server: add nfiles_on_host(),
        a support function for "locality scheduling lite".

    vda/
        vda_lib.h
        sched_vda.cpp
    client/
        client_state.cpp
    sched/
        sched_send.cpp

David  27 Aug 2012
    - scheduler: add support for limited locality scheduling
    - API: remove support for PPM files

    api/
        gutil.cpp
    db/
        boinc_db_types.h
        boinc_db.cpp
        schema.sql
    sched/
        sched_shmem.cpp
        sched_array.cpp
        sched_send.cpp,h
        sched_types.cpp,h
        sched_shmem.h
    html/ops/
        db_update.php

David  28 Aug 2012
    - scheduler: improved log messages for limited locality scheduling

    sched/
        sched_send.cpp
        transitioner.cpp
        sched_shmem.h
        sched_array.cpp
    lib/
        str_util.cpp

David  29 Aug 2012
    - scheduler: msg tweaks

    sched/
        sched_send.cpp
        sched_array.cpp
        handle_request.cpp

David  30 Aug 2012
    - remote job submission: start writing a general-purpose
        cmdline tool for remote job submission (not done)
    - remote job submission: support the 4 file modes described
        in the documentation (not done)

    html/inc/
        submit.inc
    vda/
        sched_vda.cpp
    sched/
        sched_send.cpp
        sched_array.cpp
    tools/
        remote_submit (new)

David  30 Aug 2012
    - scheduler: support for projects with some non-CPU-intensive apps
        (but not all) wasn't finished.
        New logic: if the project has an NCI app then:
        - make a list of NCI apps for which the client doesn't have
            a job in progress.
        - try to send one job for each of these apps
        - do this even if no work is being requested.
        - don't send jobs for NCI apps by other mechanisms

    NOTE: the client logic isn't quite right for mixed NCI projects.
        If there's no job for a given NCI app,
        the client should do a scheduler RPC.
        This isn't critical so we won't do this now.

    db/
        boinc_db_types.h
    sched/
        handle_request.cpp
        sched_array.cpp,h
        sched_shmem.cpp,h
        sched_customize.cpp
        sched_send.cpp
    tools/
        tt_boinc

David  2 Sept 2012
    - client: fix bug that broke file signing with X.509 certificates.
        From matszpk.  Fixes #1168.

    lib/
        filesys.cpp,h
        crypt.cpp
    client/
        cs_files.cpp

David  5 Sept 2012
    - admin web: improve script for browsing credit info
    - client: add a coproc-missing message

    html/ops/
        credit.php
    client/
        client_types.cpp
    sched/
        sched_customize.cpp

David  6 Sept 2012
    - admin web: credit browser tweaks

    html/
        user/
            lammps.php
        ops/
            credit.php
    sched/
        file_deleter.cpp

David  6 Sept 2012
    - scheduler: fix bug in homogeneous app version.
        We were using a static BEST_APP_VERSION in
        check_homogeneous_app_version(),
        and it wasn't being initialized on each call
        (e.g. its HOST_USAGE was not being cleared).

    sched/
        sched_version.cpp
        file_deleter.cpp

David  6 Sept 2012
    - scheduler: fix sending of NCI jobs.
        We were failing to mark the cache entries as free.
    - API: initialize GPU device # to -1;
        If client doesn't give us a device number, something is wrong
        and it's better to not start computing.

    sched/
        sched_array.cpp
        sched_send.cpp
    lib/
        app_ipc.cpp

David  7 Sept 2012
    - scheduler: more detailed msgs for NCI job sending

    sched/
        sched_array.cpp

Charlie 8 Sep 2012
    - client: work around a nasty bug which crashes OSX (!) on some 
        dual-gpu MacBooks with CUDA installed if we call cuInit() 
        unless we force use of the discrete (NVIDIA) GPU.
        
    client/
        gpu_opencl.cpp

Rom    10 Sept 2012
    - client: initialize memfree and memtotal before use for Nvidia
        cards.  It appears that the Nvidia API was only setting 32-bits
        of the 64-bit value.  The remaining 32-bits were whatever
        was on the stack.
        
    client/
        gpu_nvidia.cpp

Eric K 10 Sept 2012
    - sched: fixed bug in plan_class_spec.cpp the resulting in GPU performance
      not being included in scheduler or credit calculations.

    sched/
       plan_class_spec.cpp

Charlie 12 Sep 2012
    - client: Don't support CUDA on dual-GPU MacBooks with automatic 
        GPU switching but continue to support OpenCL for NVIDIA GPUs.
        This prevents forcing use of the discrete (NVIDIA) GPU, which 
        greatly decreases time the computer can run on battery power.
        
    client/
        hostinfo_unix.cpp
        gpu_nvidia.cpp
        gpu_opencl.cpp
    lib/
        hostinfo.h

David  12 Sept 2012
    - user web: fix bug when do forum search on Google

    html/user/
        forum_search_action.php

David  13 Sept 2012
    - scheduler: fix logic error limited locality scheduling.
        In LLS array pass, skip file-on-host check if host
        doesn't have any sticky files.
        TODO: it should actually be "any sticky files for this app".
        But we currently don't have any way to know that.

    sched/
        sched_array.cpp

Rom    13 Sept 2012
    - client: Initialize the total mem size_t.
    
    client/
        gpu_nvidia.cpp

David  16 Sept 2012
    - client: enforce excluded app at startup
    - win compile fix

    client/
        app.cpp
    lib/
        filesys.h

David  19 Sept 2012
    - scheduler: fix bug that cause NCI to be sent even when
        client is not requesting work
    - client: parse the <vbox_window> option in cc_config.xml

    html/inc/
        util.inc
    client/
        log_flags.cpp
    sched/
        sched_send.cpp

David  19 Sept 2012
    - Client/manager: if a GPU app is suspended because a GPU-exclusive
        app is running, show an appropriate message.

    clientgui/
        sg_TaskPanel.cpp
        MainDOcument.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

David  19 Sept 2012
    - client: message tweak
    client/
        app.cpp
        cs_prefs.cpp

David  20 Sept 2012
    - client simulator compile fix
    clientgui/
        MainDocument.cpp
    client/
        makefile_sim

David  20 Sept 2012
    - cancel_jobs tool: add --name option to cancel job by name.
        From David Coss.

    tools/
        backend_lib.cpp,h
        cancel_jobs.cpp

David  20 Sept 2012
    - A bunch of tweaks from Steffen Moller, e.g. using MAXPATHLEN

    various files

Charlie 21 Sep 2012
    - Mac: Fix build breaks introduced by above changes; path_to_error 
        arg is modified by CheckNestedDirectories() so can't be const.

    client/
        check_security.cpp

David  21 Sept 2012
    - client: MAXPATHLEN tweak

    client/
        app.cpp

David  21 Sept 2012
    - Manager: fix "exclusive GPU app running" message logic.

    clientgui/
        MainDocument.cpp

David  22 Sept 2012
    - Unix startup script fixes, from Andrew Stevenson

    client/
        cs_statefile.cpp
        script/
            boinc-client.in

David  23 Sept 2012
    - web: add global prefs reset button
    - change default disk prefs to:
        - no absolute limit on disk usage (we need to work with future disks)
        - keep 100 MB min free space
        - use up to 90% of total space

    html/
        user/
            prefs_default.php (new)
            prefs.php
        inc/
            prefs.inc
    lib/
        prefs.cpp

Eric K  24 Sept 2012  (Date committed to git repository)
    - sched: 2 bug fixes in credit.cpp
        - It was possible if all results for a workunit were PFC_MODE_INVALID
          that NaN pfc would be used causing database update errors.  Solved 
          by using wu_estimated_pfc() as pfc in that case.
        - Sanity check was comparing raw_pfc directly to rsc_fpops_bound.  That
          was causing problems GPUs with high performance estimates.  Fixed by 
          including the app_version scale factor in the check.  I thought I had 
          already committed this...
        - Removed a few lines of commented out experimental code accidentally
          comitted earlier.

    sched/
        credit.cpp

David  30 Sept 2012
    - API: if get a resume message from client while in a critical section,
        clear the suspend_request flag.
        Otherwise we'll end up doing two suspends,
        and on Win the app will be suspended forever.

    api/
        boinc_api.cpp

David  10 Oct 2012
    - tweaks

    samples/nvopencl/
        nvopencl.cpp
    vda/
        sched_vda.cpp
        vda_lib2.cpp

David  11 Oct 2012
    - client and API: improve the way an app checks for the death of the client
        Old: heartbeat mechanism
        Problem: if the client is blocked for > 30 secs
            (e.g. because it takes a long time to write the state file,
            of because it's stopped in a debugger)
            then apps exit.
            This is bad is the app doesn't checkpoint and has been
            running for a long time.
        New: the client passes its PID to the app.
            The app periodically (10 sec) checks that the process still exists.
        Notes:
        - For backward compatibility (e.g. new API w/ old client,
            or vice versa) the client still sends heartbeats,
            and the API checks heartbeats if the client doesn't pass a PID.
        - The new mechanism works only if the client's PID isn't assigned
            to a new process within 10 secs of the client exiting.
            Windows 2000 reuses PIDs immediately, so check for Win2K
            and don't use this mechanism if so.

    TODO: For Unix multithread apps,
        critical sections aren't currently being enforced.
        Need to fix this by masking signals.

    api/
        boinc_api.cpp
    client/
        hostinfo_win.cpp
        app_start.cpp
    lib/
        app_ipc.cpp,h
        proc_control.cpp

David  11 Oct 2012
    - Win compile fixes.
        For now, include psapi.lib in various project properties.
        Try to figure out a different way.

    api/
        boinc_api.cpp
    client/
        app_start.cpp
    lib/
        boinc_win.h
    win_build/
        various .proj files

David  15 Oct 2012
    - user web: show the right page/message after the following actions:
        - rate a post
        - moderate a post
        - edit a post
        - report a post

    sched/
        validator.cpp
    tools/
        update_versions
    html/user/
        forum_rate.php
        forum_report_post.php
        forum_moderate_post_action.php
        forum_edit.php

Charlie 15 Oct 2012
    - MGR: We don't save Simple View's width & height since it's 
        window is not resizable, so don't try to read them back.
    
    clientgui/
        BOINCGUIApp.cpp

David  16 Oct 2012
    - scheduler: when adding a new HOST_APP_VERSION, check if there's already
        one for that (host, app, platform, plan class).
        If there is, use it and update the app version ID.
        This way, when a new app version is released,
        it will use the runtime and reliability statistics
        of the previous one, instead of starting from scratch.
    - add a script "stage_file" for staging an input file.
        This checks for immutability violations,
        moves or copies the file to the download hierarchy,
        computes and stores its MD5, and makes a gzipped version if needed.
    - add some files missing from git repo

    tools/
        dbcheck_files_exist
        grep_logs
        stage_file (new)
    sched/
        credit.cpp

Charlie 17 Oct 2012
    - MGR: Add Control-Shift_E shortcut (Command-Shift-E on Mac) to show Event 
        Log in Simple View, for the convenience of tech suppport volunteers.
    
    clientgui/
        sg_BoincSimpleFrame.cpp,.h

David  17 Oct 2012
    - scheduler: debug the above
    - add some files missing from git repo

    py/Boinc/
        boinc_db.py
        configxml.py
        sched_messages.py
        util.py
    sched/
        credit.cpp
        validator.cpp

David  17 Oct 2012
    - client: maintain current and previous uptime,
        and include them in scheduler RPC request.
    - scheduler: parse them
    Note: this is to support a future feature where the scheduler will
        send non-checkpointing jobs only clients likely to be able
        to complete them.

    client/
        client_state.cpp,h
        cs_scheduler.cpp
        cs_statefile.cpp
    lib/
        gui_rpc_client_ops.cpp
    sched/
        sched_types.cpp,h

David  17 Oct 2012
    - web: add "Validation inconclusive" state for task lists

    html/inc/
        result.inc

David  17 Oct 2012
    - tweaks

    client/
        async_file.cpp
    lib/
        filesys.cpp,h
    samples/atiopencl/
        atiopencl.cpp

David  17 Oct 2012
    - web: if showing a thread in oldest-first order,
        default to showing the last page of posts.

    html/inc/
        forum.inc

Charlie 18 Oct 2012
    - MGR: Fix bug which can cause Manager to quit when started in Simple View.
    - lib: fix unmatched parentheses which confused source file editor.
    
    clientgui/
        sg_TaskPanel.cpp
    lib/
        gui_rpc_client_ops.cpp

Charlie 18 Oct 2012
    - lib: don't clear entire APP_VERSION struct in APP_VERSION::parse_coproc().
    
    lib/
        gui_rpc_client_ops.cpp

Rom    19 Oct 2012
    - Add missing references to psapi.lib for various build configurations.

    win_build\
        boinc_ss.vcproj
        example_app_multi_thread.vcproj
        sleeper.vcproj
        uc2.vcproj
        uc2_graphics.vcproj
        vboxwrapper.vcproj
        wrapper.vcproj

David  19 Oct 2012
    - client: change work fetch policy to avoid starving GPUs
        in situations where GPU exclusions are used.
    - client: fix bug in round-robin simulation when GPU exclusions are used.

    Note: this fixes a major problem (starvation)
        with project-level GPU exclusion.
        However, project-level GPU exclusion interferes with most of
        the client's scheduling policies.
        E.g., round-robin simulation doesn't take GPU exclusion into account,
        and the resulting completion estimates and device shortfalls
        can be wrong by an order of magnitude.

        Furthermore, this fix only works for project-level exclusions.
        If you use app-level exclusions, starvation is still possible.

        The only way I can see to fix this would be to model each
        GPU instance as a separate resource,
        and to associate each job with a particular GPU instance.
        This would be a sweeping change in both client and server.

    client/
        log_flags.cpp
        project.cpp,h
        rr_sim.cpp
        work_fetch.cpp,h
    lib/
        coproc.h

David  21 Oct 2012
    - remote job submission tweak

    html/user/
        submit_rpc_handler.php

Rom    22 Oct 2012
    - SCR: Fix bug in X11 screensaver.
      (From Michael Tughan)
      
    clientscr/
        screensaver_x11.cpp

Rom    23 Oct 2012
    - SCR: Fix bug in X11 screensaver.
      (From David Coss)
      
    clientscr/
        screensaver_x11.cpp

Rom    24 Oct 2012
    - API: Remove the call to SendMessage(WM_QUIT, ...) after destroying the window.
        There is no guarantee what order the event queue will be processed in and if
        WM_QUIT is processed before WM_DESTROY something might linger around.
        
    api/
        graphics2_win.cpp

David  23 Oct 2012
    - server: add stage_file to project setup; add error checking to stage_file

    py/Boinc/
        setup_project.py
    tools/
        create_work_example
        stage_file

David  24 Oct 2012
    - client: if an app's finish file has existed for 10 seconds, kill it;
        it must be hung in boinc_finish().
        This behavior has been seen with LHC@home and maybe other projects.

    client/
        app.cpp,h
        cpp_control.cpp

Rom    24 Oct 2012
    - Fix the db schema check functionality so that it will work with make_project
        and upgrade correctly.  We no longer rely on svnversion for this sort of
        thing.

    db\
        init_db
    html\ops\
        db_schemaversion.php
    tools\
        make_project
        upgrade

David  24 Oct 2012
    - db_update.php is not executable, db_schemaversion.php is
        NOTE: I suggest that we not use .php for executable scripts

    html/ops/
        db_update.php

Rom    25 Oct 2012
    - API: Use CloseWindow() to respond to the API Defined WM_SHUTDOWNGFX event just
        in case CloseWindow() does something more than just send the WM_CLOSE event
        to the window proc.
        
    api/
        graphics2_win.cpp

Rom    26 Oct 2012
    - WINSETUP: Add the account manager auth logic from the 6.8 installer to current
        generation installers.
    - WINSETUP: Make whether or not to create start menu items configurable via the
        command line.  Useful for mass deployment installs.

    win_build\installerv2\
        BOINC.ism
        BOINCx64.ism

Rom    27 Oct 2012
    - VBOX: Change the way elapsed_time is calculated in vboxwrapper.

        Previously: elapsed_time was just incremented with the value of the polling
          period each iteraction through the main loop.  This introduced issues
          when vboxmanage lagged for whatever reason.  This lag could go as high as 5
          seconds.  Over the timespan of a day this could increase the wall clock time
          of a task a great deal.
          
        Now: elapsed_time is incremented with the time it took to execute the main
          loop.
          
    samples\vboxwrapper\
        vboxwrapper.cpp

Rom    27 Oct 2012
    - VBOX: Increase elapsed_time if we were forced to sleep after executing the main loop
    
    samples\vboxwrapper\
        vboxwrapper.cpp

Rom    28 Oct 2012
    - VBOX: Remove timeouts for creating and deleting snapshots.
    
    samples\vboxwrapper\
        vbox.cpp, .h

David  28 Oct 2012
    - client: fix bug in handling proxy info in cc_config.file

    client/
        log_flags.cpp

David  28 Oct 2012
    - client: if exiting because of exit_after_finished flag,
        write state file before exiting so we don't restart the job later.

    client/
        app.cpp
        app_control.cpp

David  28 Oct 2012
    - client, Unix: make Curl sockets close-on-exec,
        so that app processes don't inherit them.
    - client: fix bug that makes client exit if a slot dir contains
        finish file on startup

    client/
        app_control.cpp
        http_curl.cpp

David  28 Oct 2012
    - update_versions: get key directory from config file

    tools/
        update_versions

David  29 Oct 2012
    - GUI RPC: expose TIME_STATS info (e.g. on_frac) in
        the binding of the get_state() RPC
    - client: move client_start_time and previous_uptime
        from CLIENT_STATE to TIME_STATS,
        so that these are also visible in GUI RPC
    - scheduler RPC: move uptime and previous_uptime
        into <time_stats>
    - client: condition an RR simulation message on <rrsim_detail>
    - boinccmd: show TIME_STATS info in --get_state

    client/
        client_state.cpp,h
        cs_prefs.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
        rr_sim.cpp
        time_stats.cpp,h
    lib/
        common_defs.h
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
        gui_rpc_client_print.cpp

David  31 Oct 2012
    - wrapper: compile fix for new gcc

    samples/wrapper/
        wrapper.cpp

Rom    31 Oct 2012
    - VBOX: Don't report any error messages when unregistering the VM.
    
        VirtualBox 4.2 no longer requires certain commands to be executed
        to unregister a VM while older versions do.  Just ignore any error
        codes, if it becomes a problem we can always make it conditional
        on what version of VirtualBox is installed.
        
    samples\vboxwrapper\
        vbox.cpp

Eric K  31 Oct 2012
    - wrapper: Fix for likely compile problems due to including new header in
      previous wrapper.cpp without checking for their existence.  The macros
      required already existed in config.h.

    samples/wrapper/
        wrapper.cpp

Rom    31 Oct 2012
    - VBOX: Make deleting a snapshot a non-terminal event.
    
        Deleting stale snapshots now consists of enumerating the existing
        snapshots and deleting all but the most recent snapshot.  This fixes
        the problem where, for one reason or another, a snapshot could not
        be deleted at one point in time.  The wrapper would just continue to 
        create new ones and was unable to successfully deal with the older
        ones.  Disk space would eventually run out.
        
    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp

David  31 Oct 2012
    - client: message tweaks for failed app startup

    client/
        app_start.cpp
        client_state.cpp

David  31 Oct 2012
    - Fix MinGW build: generate_svn_version.sh only works on top level
        (from Bernd)

    lib/
        Makefile.mingw

Rom    31 Oct 2012
    - VBOX: Remove extra arguments to the enumerate snapshot command.
    
      Copy and paste was not my friend.
      
    samples\vboxwrapper\
        vbox.cpp

Rom    31 Oct 2012
    - VBOX: Cleanup all the snapshots before unregistering the VM.
    
    samples\vboxwrapper\
        vbox.cpp, .h

Rom    1 Nov 2012
    - VBOX: Make adjustments to the clean-up procedure for Vbox 4.2.
    
    samples\vboxwrapper\
        vbox.cpp, .h

David  1 Nov 2012
    - client/manager: move the conditional define of MAXPATHLEN
        from boinc_win.h to filesys.h,
        so that the client will hopefully build on Hurd,
        which doesn't define MAXPATHLEN.

    client/
        http_curl.cpp
    lib/
        boinc_win.h
        common_defs.h
        filesys.h
        gui_rpc_client.h

David  1 Nov 2012
    - fix a few unlikely but possible file-descriptor leaks (from RustyBSD)
    - remote job submission: always compute fraction done when showing
        batch list; check for nonexistent user

    client/
        cs_scheduler.cpp
    html/user/
        submit.php
    lib/
        cert_sig.cpp
        mem_usage.cpp
    sched/
        sched_timezone.cpp

David  1 Nov 2012
    - client: in checking reasons for not requesting work,
        look at backoff last.
        Otherwise the user can get a misleading message if they
        update a project that's backed off

    client/
        work_fetch.cpp
    client/
        work_fetch.cpp

Eric   1 Nov 2012
    - Found another missing file
    
    m4/
        ax_lang_compiler_ms.m4

Eric   1 Nov 2012
    - Allow sysconfdir to be specified rather than hardcoded at '$prefix/etc'
      (submitted by Alexander Kruppa)
    - Fix for compiles on os without xlocale.h

     configure.ac
     client/
         scripts/
             Makefile.am

Eric   1 Nov 2012
    - First fixes for out-of-source-tree configure and compile
    - samples/example_app will no longer build by default.  To build
      person compile must run make in the example_app directory in-source-tree.
      Thats because the Makefile is not and should not be generated by automake.
      
      Makefile.am 
      Makefile.incl 
      m4/
          sah_header_stdcxx.m4 
          sah_largefile_breaks_cxx.m4 
          sah_links.m4

David  2 Nov 2012
    - example app: get the graphics app to build on Fedora Core 14
        Note: this required installing various packages,
        and tweaking the Makefile in various ways,
        some of them FC14-specific ways

    html/ops/
        upgrade_db.php
    samples/example_app/
        Makefile
        uc2_graphics.cpp
    sched/
        sched_send.cpp
    tools/
        upgrade

Rom    4 Nov 2012
    - VBOX: Do not count the sleep time as part of the elapsed time when
        the VM is supposed to be suspended.
        
    samples\vboxwrapper\
        vboxwrapper.cpp

Rom    5 Nov 2012
    - VBOX: Ugh, if sleep_time is greater than zero, increment elapsed_time by
        the poll interval.  
        
    samples\vboxwrapper\
        vboxwrapper.cpp

David  7 Nov 2012
    - remote job submission: show 20 batches, with link to show all
    - XML parser: make low-level functions inline, in an attempt
        (unsuccessful, as far as I can tell) to boost performance

    html/user/
        submit.php
    lib/
        cc_config.h
        parse.cpp,h
        proxy_info.h
    sched/
        sched_main.cpp

David  7 Nov 2012
    - scheduler: add separate log flag for locality sched lite
    sched/
        sched_config.cpp,h
        sched_array.cpp
    - remote job submission: show 20 batches, with link to show all

David  7 Nov 2012
    - scheduler: log message tweaks
    - Some C++ files in clientgui/ had execute permissions (??).  Clear them.

    sched/
        sched_array.cpp
        sched_send.cpp

David  7 Nov 2012
    - a bunch of skin files had execute permissions (??).  Clear them.

    clientgui/skins/Charity Engine/graphic/*

David  7 Nov 2012
    - scheduler: when resend jobs:
        - don't use devices for which work is not being requested
        - obey wu_is_infeasible_custom()
            (e.g. don't send SETI@home VLAR jobs to GPUs)
    - scheduler: add <debug_array_detail> log flag for slot-level messages
    - admin web: show and allow control of app.beta

    html/ops/
        manage_apps.php
    sched/
        sched_array.cpp
        sched_config.cpp,h
        sched_resend.cpp

David  8 Nov 2012
    - remove execute permissions from various files that shouldn't have them

David  8 Nov 2012
    - add slide-show screensaver (from David Coss)

    samples/example_app/
        Makefile
        slide_show.cpp (new)

David  8 Nov 2012
    - user web: fix bug when showing last page of thread

    html/inc
        forum.inc

David  8 Nov 2012
    - scheduler: remove redundant call to wu_is_infeasible_custom()
        introduced in yesterday's commit

    sched/
        sched_resend.cpp

David  8 Nov 2012
    - scheduler: compile fix for wu_is_infeasible_custom()
    sched/
        sched_customize.cpp

Charlie 9 Nov 2012
    - Mac: update Xcode project for building boinc_zip.
    
    zip/
        boinc_zip.xcodeproj/
            project.pbxproj

Charlie 9 Nov 2012
    - Mac: add slide-show screensaver to example_app Xcode project
        and Mac example_app build scripts.
    - example app: fix compiler warnings in slide_show.cpp.
    
    samples/
        example_app/
            MakeMacExample.sh
            Makefile_mac
            Makefile_mac2
            slide_show.cpp
        mac_build/
            UpperCase2.xcodeproj/
                project.pbxproj

David  10 Nov 2012
    - fix typo in mass email script
    html/ops/
        mass_email.php

David  11 Nov 2012
    - remove job submission: fix SQL typo and error messages.
        From Niclas Lockner.

    html/user/
        submit_rpc_handler.php
    tools/
        manage_privileges

David  12 Nov 2012
    - client: Win build fix
    - add Visual Studio project for slide_show
        NOTE: this currently doesn't build because boinc_zip is missing.
        I'll fix this soon.
    win_build/
        slide_show.vcproj
        boinc.sln
    client/
        client_types.h

David  13 Nov 2012
    - client: fix bug where, when updating a project, we fail to request work
        even though higher-priority projects are marked as no-new-tasks
        or are otherwise ineligible for work fetch.

    client/
        cs_scheduler.cpp
        work_fetch.cpp

David  13 Nov 2012
    - build fixes for OpenBSD, from rustyBSD

    configure.ac
    client/
        hostinfo_unix.cpp

David  13 Nov 2012
    - web: update .pot file for project web site translations

    locale/templates/
        BOINC-Project-Generic.pot

David  14 Nov 2012
    - client: TIME_STATS fields go in <time_stats> part of state file
    - scheduler: parse TIME_STATS fields (e.g., uptime)
    - admin web: small fix for manage_apps.php

    client/
        cs_statefile.cpp
        time_stats.cpp
    db/
        boinc_db_types.h
    html/ops/
        manage_apps.php
    sched/
        handle_request.cpp
        sched_types.cpp

Rom    14 Nov 2012
    - WIN: Introduce updated project files for the boinc_zip library used
        by the slide_show project.
    - WIN: Adjust the slide_show project so that it will build both 32-bit
        and 64-bit versions and use the boinc_zip library.
        
    win_build\
        boinc.sln
        slide_show.vcproj
        libboincopencl_staticcrt.vcproj
        libboinczip_staticcrt.vcproj (Added)
    zip\
        boinc_zip.dsp (Deleted)
        ziptest.dsp (Deleted)
        ziptest.vcproj (Deleted)
        boinc_zip.cpp
        boinc_zip.vcproj (Deleted)

Charlie 15 Nov 2012
    - boinc_zip: updated boinc_zip to use current info-zip source files 
        (info-zip 3.0 and info-unzip 6.0) and to build on Mac and Windows.
        Added a vc project to build boinc_zip_test, not yet working.
        Also update Makefile.am, but this has not been tested.

    zip/
        boinc_zip.cpp,.h
        boinc_zip.xcodeproj/
            project.pbxproj
        Makefile.am
        test.cpp
        zip/
            (many files)
        unzip/
            (many files)

David  15 Nov 2012
    - boinc_zip: fix Unix build

    zip/
        Makefile.am
        zip/
            Makefile.am (add)
            unix/
                unix.c -> z_unix.c
        unzip/
            Makefile.am (add)

Charlie 15 Nov 2012
    - boinc_zip: updated boinc_zip xCode project for unix.c -> z_unix.c.

    zip/
        boinc_zip.xcodeproj/
            project.pbxproj

Rom    15 Nov 2012
    - ZIP: Use only one variant of the C Runtime Library
    - ZIP: Remove test_boinczip from the default solution.
    
    win_build\
        boinc.sln
        test_boinc_zip.vcproj

Charlie 15 Nov 2012
    - boinc_zip: fixed boinc_zip and test_boinc_zip windows projects.

    win_build/
        boinc.sln
        libboinczip_staticcrt.vcproj
        test_boinc_zip.vcproj

Charlie 16 Nov 2012
    - boinc_zip: minor cleanup of Xcode project.

    zip/
        boinc_zip.xcodeproj/
            project.pbxproj

Rom    16 Nov 2012
    - ZIP: Add missing preprocessor symbols to the 64-bit build targets.
    
    win_build/
        libboinczip_staticcrt.vcproj

Rom    16 Nov 2012
    - VBOX: Add the ability to specify both the type and model of disk
        controller to use.  It can be specified by adding the following
        tags to vbox_job.xml:
        
        <vm_disk_controller_type></vm_disk_controller_type>
        <vm_disk_controller_model></vm_disk_controller_model>

      Executing vboxmanage --help will list the available options in the
        storeagectl section.
        
    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp

Charlie 16 Nov 2012
    - boinc_zip: Fix linker conflicts if zlib and boinc_zip are both used 
        in a project.

    win_build/
        boinc.sln
        libboinczip_staticcrt.vcproj
        test_boinc_zip_zlib_conflicts.vcproj (added)
    zip/
        boinc_zip.xcodeproj/
            project.pbxproj
        Makefile.am
        testzlibconflict.cpp (added)

David  18 Nov 2012
    - compile fix for FreeBSD

    lib/
        network.cpp

David  19 Nov 2012
    - remove deprecated MAC address code

    lib/
        mac_address.cpp,h (removed)

David  19 Nov 2012
    - client: if a project has 64 or more ready-to-report tasks,
        report them.
        64 is chosen a bit arbitrarily, but the idea is to
        limit the number of tasks reported per RPC,
        and to accelerate the reporting of small tasks.

    client/
        client_state.h
        cs_scheduler.cpp
        project.h

Charlie 19 Nov 2012
    - Mac: remove deleted files from Xcode project.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 19 Nov 2012
    - boinc_zip: Add teszlibconflict target to boinc_zip Xcode project.

    zip/
        boinc_zip.xcodeproj/
            project.pbxproj

David  19 Nov 2012
    - wrapper: add source files for a regular expression library
        (too be used soon)
    - boinc_zip: add makefile for test program
    samples/wrapper/
        regerror.c
        regexp.c,h
        regexp_custom.h
        regexp_int.h
        regexp_memory.c
        regexp_report.c
        regmagic.h
        regsub.c
    zip/
        makefile_test

Charlie 20 Nov 2012
    - WIN: Fix Debug configuration which was corrupted.

    win_build\
        boinc.sln

David  21 Nov 2012
    - wrapper: add feature for unzipping input files and zipping output files

    samples/wrapper/
        Makefile
        job.xml
        wrapper.cpp

David  21 Nov 2012
    - Unix build: add configure option for minimal make output

    configure.ac

David  22 Nov 2012
    - client: if a project is anonymous platform,
        don't send list of alternate platforms in scheduler RPC.

    client/
        cs_platforms.cpp

David  22 Nov 2012
    - scheduler: if primary platform is anonymous, ignore alternate platforms.

    sched/
        handle_request.cpp

David  23 Nov 2012
    - client: fix uninitialized vars in CPU feature detection (from RustyBSD)

    client/
        hostinfo_unix.cpp
    html/
        inc/
            submit.inc
        user/
            sandbox.php

David  25 Nov 2012
    - wrapper: compile fixes for Win

    samples/wrapper/
        regexp.c,h

David  25 Nov 2012
    - scheduler: add extra check for not sending homogeneous app version
        jobs to anonymous platform clients
    - remote job submission: add DB table for keeping track of files

    db/
        schema.sql
        contraints.sql
    html/
        inc/
            submit_db.inc
        ops/
            db_update.php
    sched/
        sched_version.cpp

David  26 Nov 2012
    - client: when reset a project, clear its scheduler URL list
        (force a reload of the master page)

    client/
        app_start.cpp
        client_state.cpp
    html/inc/
        submit_db.inc

David  26 Nov 2012
    - admin web: change revalidate function to revalidate
        valid as well as invalid results

    html/ops/
        revalidate.php

David  27 Nov 2012
    - server programs: allow config.xml to be a symlink

    lib/
        filesys.cpp,h
    sched/
        sched_config.cpp

Charlie 28 Nov 2012
    - Mgr: Fix Windows hangs and simplify code for notices display:
        - Handle protocol-relative URLs which hung Manager on Windows.
            RSS feeds and web pages may use protocol-relative (scheme-
            relative) URLs, such as <img src="//sample.com/test.jpg"/>
            Since the html comes from a web server via http, the scheme 
            is assumed to also be http.  But we have cached the html in
            a local file, so it is no longer associated with the http 
            protocol / scheme.  Therefore all our URLs must explicity 
            specify the http protocol.
         - The Manager would hang when trying to get data from web 
            servers if there was no Internet connection.  This happened 
            on Windows only, not on Mac.  (I don't have the hardware to 
            test on Linux, but I suspect it is OK as Mac uses UNIX.)  I 
            fixed this by implementing asynchronous network I/O in 
            CBOINCHtmlListBox on Windows.
         - Eliminate need for CBOINCVListBox class and greatly simplify 
            CBOINCHtmlListBox class.

    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp,.h
        BOINCHtmlLBox.cpp,.h
        BOINCInternetFSHandler.cpp,.h
        BOINCVListBox.cpp,.h  (removed)
        Makefile.am
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
    win_build/
            boincmgr.vcproj

David  28 Nov 2012
    - client: add "client app configuration" feature; see
        http://boinc.berkeley.edu/trac/wiki/ClientAppConfig
        This lets users do the following:
        1) limit the number of concurrent jobs of a given app
            (e.g. for WCG apps that are I/O-intensive)
        2) Specify the CPU and GPU usage parameters of GPU versions
            of a given app.
        Implementation notes:
        - max app concurrency is enforced in 2 places:
            1) when building the initial job run list
            2) when enforcing the final job run list
            Both are needed to avoid possible starvation.
        - however, we don't enforce it during RR simulation.
            Doing so could cause erroneous shortfall and work fetch.
            This means, however, that work buffering will not work
            as expected if you're using max concurrency.

    client/
        app_config.cpp,h (new)
        Makefile
        client_state.cpp
        client_types.h
        cpu_sched.cpp
        file_names.h
        project.h
        result.h

David  28 Nov 2012
    - client: add the above to VS project

    win_build/
        boinc_cli.vcproj

David  28 Nov 2012
    - user web: don't show fraction done in list of batches.
        It slows things down too much.

    html/user/
        submit.php

David  28 Nov 2012
    - fix mysterious problems in Windows build

    win_build/
        boinc.sln
        wrapper.vcproj

David  28 Nov 2012
    - client: bug fixes for app config feature

    client/
        client_state.cpp
        client_types.h

Charlie 28 Nov 2012
    - client: add new files app_config.cpp,h to Xcode project.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  29 Nov 2012
    - client (Win) preallocate large files to avoid file fragmentation
        when you write to them incrementally
        (workaround for shoddy filesystem design)
    - admin web: remove line that limited mass emails to 10
    client/
        async_file.cpp
        file_xfer.cpp
        gui_http.cpp
        http_curl.cpp,h
        scheduler_op.cpp
    lib/
        filesys.cpp,h
    html/ops/
        mass_email.php

David  30 Nov 2012
    - server: fix create_forums.php

    html/ops/
        create_forums.php

David  30 Nov 2012
    - lib: Win compile fix for boinc_allocate_file()

    lib/
        filesys.cpp

Charlie 30 Nov 2012
    - Mgr: Fix some rare issues on Windows (including a possible memory 
        leak) when switching to a client on a different computer after 
        trying to display notices without an Internet connection.

    clientgui/
        BOINCHtmlLBox.cpp,.h
        BOINCInternetFSHandler.cpp
        NoticeListCtrl.cpp,.h

David  30 Nov 2012
    - client: if <dont_check_file_sizes> is set,
        don't check file existence at startup
    - wrapper: open files in shared mode
        so you can look at them while wrapper is running

    client/
        cs_files.cpp
    lib/
        procinfo.cpp
    samples/wrapper/
        wrapper.cpp

David  30 Nov 2012
    - Mac installer: add missing pclose() (from RustyBSD)

    mac_installer/PostInstall.cpp

David  30 Nov 2012
    - scheduler: use HOST_USAGE::uses_gpu() function where appropriate

    sched/
        sched_customize.cpp

David  30 Nov 2012
    - scheduler: build fixes for FreeBSD.  From RustyBSD.

    vda/
        sched_vda.cpp
        vda_lib2.cpp

David  2 Dec 2012
    - web: add hook for "science info" link in result lists (for CAS@home)

    html/inc/
        result.inc
        util.inc

Charlie 4 Dec 2012
    - OpenCL: Add a second API for boinc_get_opencl_ids() which is 
        compatible with older clients (before BOINC 7.0.12).
    
    api/
        boinc_opencl.cpp,h

Rom    4 Dec 2012
    - VBOX: Add the ability to read a fraction done file from the shared
        directory.  Use the same semantics as the regular wrapper.
        
    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp

Charlie 5 Dec 2012
    - OpenCL: Add definition of GPU_TYPE_INTEL to match definitions of 
        GPU_TYPE_ATI and GPU_TYPE_NVIDIA.
    - OpenCL: Change type argument of new boinc_get_opencl_ids() API from 
        char* to int; it now accepts PROC_TYPE_NVIDIA_GPU, PROC_TYPE_AMD_GPU 
        or PROC_TYPE_INTEL_GPU.

    api/
        boinc_opencl.cpp,h
    lib/
        coproc.h

Charlie 5 Dec 2012
    - OpenCL: First pass at adding support for Intel Ivy Bridge GPUs.
      The following files still need updating: 
        ProjectInfoPage.cpp,.h, ProjectListCtrl.cpp,.h
    client/
        acct_mgr.cpp
        client_state.cpp
        cpu_sched.cpp
        cs_account.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
        gpu_detect.cpp,.h
        gpu_opencl.cpp
        log_flags.cpp
        project.cpp
        scheduler_op.cpp
    clientgui/
        AdvancedFrame.cpp
        AsyncRPC.cpp
        BOINCTaskBar.cpp
        DlgItemProperties.cpp
    lib/
        cc_config.cpp,.h
        coproc.cpp,.h
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  7 Dec 2012
    - lib: add size info to messages when realloc() fails in MFILE
    lib/
        mfile.cpp

Rom    5 Dec 2012
    - MGR: Fix two potential security issues with browser.cpp where the
        query to the cookie database could have been abused.  At present
        neither of the two parameters originate as user input so using it
        as an attack vector isn't very high.  Prevent the functions from
        being exploited in the future in case the routines were ever used
        in a different way.
        
    clientgui/
        browser.cpp

Rom    5 Dec 2012
    - VBOX: Fix build break introduced by the previous vbox commit.
    
    samples/vbox/
        vboxwrapper.cpp

Rom    5 Dec 2012
    - client: strcasestr doesn't exist on Windows.
    
    client/
        gpu_opencl.cpp

Charlie 5 Dec 2012
    - client: strcasestr does exist on Windows in lib/str_replace.cpp, 
        but I just needed to #include "str_replace.h".  This is 
        preferable because it handles INTEL as well as Intel and intel.
    
    client/
        gpu_opencl.cpp

David  5 Dec 2012
    - fix typo in GUI RPC
    - check in some code for multi-user job prioritization

    db/
        boinc_db.cpp,h
        boinc_db_types.h
    sched/
        Makefile.am
        adjust_user_priority.cpp (new)
        sched_shmem.h
    lib/
        gui_rpc_client_ops.cpp
    tools/
        backend_lib.cpp

Charlie 6 Dec 2012
    - OpenCL: Add peak FLOPS computation for Intel Ivy Bridge GPUs.
 
    lib/
        coproc.cpp

David  7 Dec 2012
    - adjust_user_priority: scale FLOP count by app's min_avg_pfc
        to account for systematic errors in FLOP count
    - adjust_user_priority: get total project RAC by summing RAC
        of app versions where RAC has been updated in past week
    - feeder: add --priority_asc option
        (for when wu.priority is a logical time)

    sched/
        adjust_user_priority.cpp
        feeder.cpp
    tools/
        backend_lib.cpp,h

David  7 Dec 2012
    - Manager: compile fixes for OpenBSD.  From RustyBSD.

    clientgui/
        AsyncRPC.cpp
        stdwx.h

David  7 Dec 2012
    - client (unix): rename() doesn't work between filesystems.
        If the user has set things up so that slots/ is a symlink
        to a different filesystem, things won't work when the client
        moves output files from the slot to project dir.
        Solution: if rename() fails, try system("mv ...")
        since mv works across filesystems

    lib/
        filesys.cpp

Charlie 7 Dec 2012
    - Manager: Fix Mac bug introduced by recent OpenBSD compile fixes.  

    clientgui/
        mac/
            config.h

Rom    7 Dec 2012
    - MGR: Minor fix to the OpenCL output for Intel GPUs.
    
    client/
        gpu_detect.cpp

Rom    8 Dec 2012
    - client: Hook up the XML portion of the Intel GPU detection code so
        the server scheduler knows about it.
    - client: Print out the peak flops for the Intel GPU, the regular
        OpenCL descriptions do not show peak flops.

    NOTE: At this point we should be supporting Intel GPUs as far as 
        detection and reporting its presence to the server goes.  I don't
        know about scheduling though.
        
        Thanks Tank Master for the interactive debug session in IRC.

    client/
        gpu_intel.cpp (Added)
        client_state.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
        gpu_detect.cpp, .h
        gpu_opencl.cpp
        log_flags.cpp
    lib/
        cc_config.cpp, .h
        coproc.cpp, .h

Rom    8 Dec 2012
    - client/server: fix build breaks I introduced last night with a variable 
        rename.

    client/
        acct_mgr.cpp
        cpu_sched.cpp
        gpu_detect.cpp
    clientgui/
        AdvancedFrame.cpp
        AsyncRPC.cpp
        BOINCTaskBar.cpp
        DlgItemProperties.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
    sched/
        plan_class_spec.cpp
        sched_send.cpp
        sched_types.cpp

Rom    8 Dec 2012
    - client/server: Make sure the GPU Type field is really classified as an Intel
        GPU.
        
    lib/
        coproc.cpp

David  8 Dec 2012
    - client/manager: tweaks to Intel GPU code
    client/
        acct_mgr.cpp
        cs_account.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
        gpu_opencl.cpp
        project.cpp
        scheduler_op.cpp
    lib/
        coproc.cpp
        procinfo.cpp

David  8 Dec 2012
    - client: win compile fix
    client/
        gpu_detect.cpp

Charlie 8 Dec 2012
    - client: add new file gpu_intel.cpp to Xcode project.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  8 Dec 2012
    - client: replace ignore_nvidia_dev etc. with an array.
        PRINCIPLE: AVOID PER-GPU-TYPE VARIABLES
    - get rid of alloca() stuff in gutil.cpp; almost certainly not needed
    - don't include malloc.h; it doesn't exist on BSD systems

    api/
        gutil.cpp
    client/
        client_state.cpp
        gpu_detect.cpp
        gpu_opencl.cpp
        log_flags.cpp
    lib/
        cc_config.cpp,h
        coproc.h
        mfile.cpp
    vda/
        vdad.cpp

David  8 Dec 2012
    - minor code cleanup from RustyBSD
    client/
        check_security.cpp
        gui_rpc_server.cpp
    clientgui/
        sg_ProjectPanel.cpp
        sg_TaskPanel.cpp
    clientscr/
        screensaver_x11.cpp

Charlie 10 Dec 2012
    - client: clean up redundant and confusing GPU descriptions.
        Problems:
        COPROC_NVIDIA::description() is really description of CUDA GPUs.
        COPROC_ATI::description() is really description of CAL GPUs.
        On Windows and Linux, AMD OpenCL and CAL always coexist, and 
        NVIDIA OpenCL and CUDA always coexist.  
        But on the Mac, AMD OpenCL always exists without CAL and NVIDIA 
        OpenCL often exists without CUDA.  Therefore, BOINC has never 
        shown peak-flops on the Mac for AMD or for NVIDIA without CUDA 
        because it does not display COPROC_ATI::description() and may 
        not display COPROC_NVIDIA::description().

        On all OS's, INTEL GPU OpenCL will always exist without any 
        vendor-proprietary GPU computation framework, so 
        COPROC_INTEL::description() would never show COPROC_USED.
        
        Solutions:
        [1] Instead of adding "(OpenCL only)" to these descriptions just 
        to show peak-flops for these cases, show peak_flops in all OpenCL 
        descriptions.
        [2] Preface COPROC_NVIDIA::description() with "CUDA: " and 
        preface COPROC_ATI::description() with "CAL: " to match the 
        "OpenCL: " preface in OPENCL_DEVICE_PROP::description().
        [3] Eliminate useless COPROC_INTEL::description().

    client/
        gpu_detect.cpp
        gpu_opencl.cpp
    lib/
        coproc.cpp,.h

Charlie 10 Dec 2012
    - client: COPROC_NVIDIA, COPROC_ATI and COPROC_INTEL constructors 
        must initialize the entire struct, not just the GPU type field.

    lib/
        coproc.h

David  10 Dec 2012
    - client: re-apply app configuration after each scheduler RPC;
        otherwise the changes get overwritten
    client/
        cs_scheduler.cpp

David  10 Dec 2012
    - lib: the XML tag for the description of an Intel GPU is
        <coproc_intel_gpu>, not <intel_gpu>
        
    lib/
        coproc.cpp

David  10 Dec 2012
    - lib: the XML type field for an Intel GPU is INTEL_GPU, not INTEL

    lib/
        coproc.cpp

David  10 Dec 2012
    - lib: actually let's make it "intel_gpu".

    lib/
        coproc.cpp
    sched/
        sched_customize.cpp

Charlie 11 Dec 2012
    - Manager: remove sqlite3.c from Xcode project; add build script to 
        build libsqlite3.a from source files downloaded from sqlite3.org.
    
    clientgui/
        sqlite3.c (deleted)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
        buildsqlite3.sh (added)
        HowToBuildBOINC_XCode.rtf
        setupforBOINC.sh

Rom    11 Dec 2012
    - server: Add a default plan class for the Intel GPUs.
        (opencl_intel_gpu_101)

    sched/
        sched_customize.cpp


David  11 Dec 2012
    - Win process control (affects API and wrapper):
        Since Win doesn't have an API for process suspend/resume,
        we were suspending processes by
            1) enumerating all the threads in the system
            (typically several thousand)
            2) suspending those belonging to the given process
        The problem: for each thread, the code was calling a function
        in diagnostics_win.cpp to see if the thread
        was exempted from suspension.
        This check (which is unnecessary anyway if we're
        suspending another process)
        was surrounded by a semaphore acquire/release.
        The result: performance problems.
        It could take a minute to suspend the threads.
        Solution:
            1) do the check for exemption only if we're suspending threads
                in our own process (i.e. from the API)
            2) if we're suspending multiple processes, enumerate the threads
                only once, and see if each one belongs to any of the processes
            3) have the wrapper elevate itself to normal priority.
                Otherwise it can get preempted for long periods,
                sometimes in the middle of scanning the threads.
        Note: post-9x versions of Win have a process group API
        that includes suspend/resume.
        We'll switch to this soon.

    api/
        boinc_api.cpp
    client/
        gpu_detect.cpp
    lib/
        proc_control.cpp,h
        procinfo.cpp
        util.h
    samples/wrapper/
        wrapper.cpp

Rom    12 Dec 2012
    - ZIP: Make sure output files end up in the 'build' directory structure
        so they will be ignored by Git tools.
        
    win_build/
        libboinczip_staticcrt.vcproj

Rom    12 Dec 2012
    - wrapper: Fix 64-build targets on Windows.
    
    win_build/
        wrapper.vcproj

David  12 Dec 2012
    - fix compile warning
    - Git can ignore Unix compile outputs

    .gitignore
    client/
        gpu_detect.h

David  12 Dec 2012
    - client: show Intel GPU memory size as integer
    lib/
        coproc.cpp

David  12 Dec 2012
    - scheduler: attempted performance enhancement.
        Old: each scheduler process holds a semaphore
            while scanning the shared-mem job array.
            On machines with many CPUs
            there seems to be contention for this semaphore,
            causing slow scheduler response and possibly connection failures.
        New: Don't hold the semaphore while scanning array.
            Instead, if find a job that passes quick_check(),
            acquire the semaphore and recheck that the job is present in array
            and passes quick_check().
    - client: show messages if app_config.xml has unrecognized tags

    sched/
        sched_array.cpp
    client/
        app_config.cpp,h

David  12 Dec 2012
    - restore 2 commits erased by Charlie's Dec 10 commit
    clientgui/
        sb_TaskPanel.cpp
    clientscr/
        screensaver_x11.cpp
    lib/
        mfile.cpp
    vda/
        vdad.cpp

Charlie 13 Dec 2012
    - wrapper: Fix build script and Makefile on Mac.
    
    samples/wrapper/
        BuildMacWrapper.sh
        Makefile_mac

Rom    13 Dec 2012
    - Apply RustyBSD's patch for selectively disabling the detection of the
        X screensaver framework in configure.ac

    /
        configure.ac

Rom    13 Dec 2012
    - SCR: Include the compiled X11 screensaver app in the self extracting
        archive distro of the client software.

    packages\generic\sea\
        Makefile.am

David  14 Dec 2012
    - server (start script and server_status.php):
        Support projects (e.g. Einstein@home) in which server components run on
        machines with no shared filesystem.
        From Bernd.

    html/user/
        server_status.php
    sched/
        start
    tools/
        upgrade

Charlie 14 Dec 2012
    - Mgr: Fix delay displaying notices.

    clientgui/
        NoticeListCtrl.cpp

Charlie 14 Dec 2012
    - OpenCL: Eliminate spurious error message when an OpenCL platform exists 
        but the computer has no corresponding devices.
    - Mac: Fix linker warning.
        
    client/
        gpu_opencl.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  18 Dec 2012
    - client simulator: fix build errors

    client/
        app.cpp
        makefile_sim
        sim.cpp

Charlie 18 Dec 2012
    - Mgr: Fix potential crashes displaying notices asynchronously on Windows.
    
    clientgui/
        BOINCHtmlLBox.cpp,.h
        BOINCInternetFSHandler.cpp

Charlie 18 Dec 2012
    - Mgr: Fix bad line endings.
    
    clientgui/
        ViewNotices.cpp,.h

Charlie 18 Dec 2012
    - Mgr: More robust way to display "No notices" message.
    
    clientgui/
        NoticeListCtrl.cpp,.h
        ViewNotices.cpp,.h

Charlie 18 Dec 2012
    - Mgr: Shorten Internet timeout for notices on Windows to 5 seconds.
            Fix license info.
    
    clientgui/
        BOINCInternetFSHandler.cpp,.h

David  18 Dec 2012
    - web: use &middot; instead of | as a separater

    html/
        inc/
            forum.inc
            host.inc
            pm.inc
            team.inc
            user.inc
            util.inc
        user/
            forum_user_posts.php
            pm.php
            submit.php
            team_manage.php
            top_hosts.php
            top_teams.php
            top_users.php

Rom    19 Dec 2012
    - VBOX: Perform a quick check that the wrapper can communicate with
        vboxsvc via vboxmanage before attempting anything else.  If it
        fails, get BOINC to reschedule task execution in 5 minutes.
        
      NOTE: After a reboot it might take a few moments before everything
        is in working order.
        
    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp
    win_build\
        vboxwrapper.vcproj

Charlie 20 Dec 2012
    - Mgr: fix license declaration in file derived from wxWidgets.
    - Mgr: Windows only: If OpenURL fails, we probably don't have an Internet 
        connection so use a shorter timeout for subsequent calls to OpenURL 
        until one succeeds; otherwise notices takes takes too long to display
        if there are multiple notices with images.
    - Mgr: Display the fetching notices message until we have notices to 
         display or have determined that there are no notices.
    - Mgr: Don't call get_notices RPC before previous one is processed to 
        prevent multiple display of notices.
    - Mgr: Display "Fetching notices..." instead of "There are no notices" 
        while getting notices.  Display "There are no notices" only if we 
        have actually determined there are no notices.
    - Mgr: Add code to reload notices with images / items missing due to 
        problems accessing their URLs.

    clientgui/
        MainDocument.cpp,.h
        BOINCInternetFSHandler.cpp
        NoticeListCtrl.cpp,.h
        ViewNotices.cpp,.h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

Rom    20 Dec 2012
    - VBOX: Initialize the PATH variable before attempting to check to see if
        the system is ready.

    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp
    win_build\
        vboxwrapper.vcproj

Charlie 21 Dec 2012
    - Mgr: If network activity is suspended, don't retrieve URL references within 
        notices unless they are already in our cache or in the Windows cache.
    - Mgr: Clear our internal Internet cache when selecting a different computer.
    - Mgr: Display a message and "Retry now" button if some images or other items 
        within notices failed to load from the Internet; if network activity is 
        suspended, say so in the message.

    clientgui/
        BOINCInternetFSHandler.cpp,.h
        events.h
        NoticeListCtrl.cpp,.h
        ViewNotices.cpp,.h

David  21 Dec 2012
    - web: add advisory text to "Export as Notice" balloon
    - scheduler: make max # of CPUs a #define, default 4096
        
    client/
        client_state.cpp
    html/user/
        forum_thread.php
    sched/
        edf_sim.cpp
        sched_send.cpp,h

Charlie 22 Dec 2012
    - Mgr: When removing entries from our hash table, delete data to avoid memory 
        leaks.
    - Mgr: Allow existing notices to retrieve images or other items from the 
        Internet even if network activity is suspended.  (But client won't get 
        new notices.)
    - Mgr: Reset Internet timeout when retrying notices.

    clientgui/
        BOINCInternetFSHandler.cpp
        ViewNotices.cpp,.h

Charlie 23 Dec 2012
    - Mgr: Bug fixes for Windows Async Internet access, including closing the 
        WinINet handle when aborting due to timeout, etc. to prevent crashes.
    - Mgr: Add all the new notices features to the Simple View notices dialog.

    clientgui/
        BOINCInternetFSHandler.cpp,.h
        NoticeListCtrl.cpp
        sg_DlgMessages.cpp,.h

David  24 Dec 2012
    - file upload handler: in FCGI version, check for trigger file
        each time through loop (from Bernd).
    - validator: fix bug that zeroed result.random

    db/
        boinc_db.cpp
        boinc_db_type.h
    sched/
        file_upload_handler.cpp
        sched_array.cpp
    tools/
        backend_lib.cpp

David  24 Dec 2012
    - client: improved log messages for work fetch

    client/
        work_fetch.cpp

Charlie 26 Dec 2012
    - Mgr: When closing Simple View notices, wait for all Async Internet access
        to complete before calling the notices panel destructor.

    clientgui/
        BOINCBaseFrame.cpp
        BOINCInternetFSHandler.cpp,.h
        NoticeListCtrl.cpp
        sg_DlgMessages.cpp,.h

David  26 Dec 2012
    - eliminate use of alloca() and strdupa().
    - don't include malloc.h
    - fix compile warnings

    configure.ac
    clientscr/
        screensaver_x11.cpp
    lib/
        str_util.cpp
    sched/
        hr_info.cpp

David  27 Dec 2012
    - client: processor identification for ARM
        (from Evandro Menezes and Joachim Fritzsch)

    client/
        hostinfo_unix.cpp
        hostinfo_unix_test.cpp

David  27 Dec 2012
    - API: fix Unix bug when checking if client is alive based on PID.
        Can't use waitpid() here; works only for children.
        Use kill(pid, 0) instead.

    api/
        boinc_api.cpp

Rom    28 Dec 2012
    - VBOX: On *nix systems, force the wrapper into sandbox mode if the
        HOME environment variable is missing.  Without the HOME environment
        variable VirtualBox attempts to write log files and other state
        information in root's home directory.
    
    samples\vboxwrapper\
        vbox.cpp

Rom    28 Dec 2012
    - VBOX: Record what version of VirtualBox was used, as well as whether
        anonymous platform was specified for the project.

    samples\vboxwrapper\
        vbox.cpp, .h
        vboxwrapper.cpp

Rom    28 Dec 2012
    - VBOX: On *nix systems, if the vboxdrv kernel module isn't loaded declare
        it a temp error and reschedule execution at a later date.
        
    samples\vboxwrapper\
        vbox.cpp

Rom    28 Dec 2012
    - VBOX: Clean up version string.
    
    samples\vboxwrapper\
        vbox.cpp

David  29 Dec 2012
    - API: improve log messages when detect dead client

    api/
        boinc_api.cpp

David  29 Dec 2012
    - client: disable remote access if
        - gui_rpc_auth.cfg is empty, or
        - it doesn't exist and we can't open it for writing, or
        - the write to it fails
        (from RustyBSD)

    client/
        gui_rpc_server.cpp

David  29 Dec 2012
    - client: don't crash if GUI RPC password is too long
        (from RustyBSD)

    client/
        gui_rpc_server_ops.cpp
