David  Jan 2 2009
    - added a script to make profile.has_picture consistent
        with the images actually on disk

    html/ops/
       repair_profile_pictures.php 

David  Jan 2 2009
    - client: more work-fetch stuff.
        No more per-project shortfall.
        It's getting pretty close.

    client/
        client_state.cpp
        client_types.cpp,h
        cs_scheduler.cpp
        rr_sim.cpp
        scheduler_op.cpp
        work_fetch.cpp,h
    lib/
        coproc.cpp,h

Janus   Jan 6 2009
    - Various translation fixes
    - Added Danish web interface translation
    - Added some Danish translation texts to the client translation file    
    - Added Finnish web interface translation (contributed by ORE)

    html/
    inc/
        user.inc
    user/
        info.php
    languages/translations
        da.po (fully rewritten)
        fi.po (new)
    locales/da
    BOINC-Manager.po

Charlie Jan 6 2009
    - client: preserve ownership when copying files to slot directory. Fixes
        a problem with Enigma@home which uses the <copy_file/> tag.

    lib/
        filesys.cpp

Rom    7 Jan 2009
    - Fix build environment so that it can build the client again
      (From Nicolás Alvarez)
      
    /
        configure.ac
        Makefile.am
    sea/
        make-tar.sh
        make-tar_debug.sh

David  7 Jan 2009
    - get_project_config: don't send error text if no terms_of_use.txt
    - client: compute and store project work-fetch attributes
        fixes #820

    client/
        client_state.h
        work_fetch.h,cpp
    html/user/
        get_project_config.php

Charlie Jan 6 2009
    - client: fix compiler warnings (formats didn't match data).

    client/
        work_fetch.cpp

David  9 Jan 2009
    - client: connected_frac -1 is OK; fixes #821

    client/
        time_stats.cpp

David  9 Jan 2009
    - scheduler: add support for resource-specific scheduler requests:
        - parse new request message elements
            (CPU and coproc requested seconds and instances)
        - decide how many jobs to send based on these params
        - select app version based on these params
            (may send both CPU and CUDA app versions for the same app!)

    lib/
        coproc.cpp
    sched/
        handle_request.cpp
        main.cpp,h
        sched_plan.cpp
        sched_send.cpp
        server_types.cpp,h

David  9 Jan 2009
    - client: debugging CUDA-related stuff
    - client: if reset a project, clear its overall and per-resource backoffs

    client/
        client_state.cpp
        client_types.cpp
        cs_scheduler.cpp
        rr_sim.cpp
        scheduler_op.cpp
        sim.h
        work_fetch.cpp,h
    lib/
        coproc.cpp

Charlie Jan 10 2009
    - Mac: Fix build scripts for new locale source directory layout.
    
    mac_installer/
        release_GridRepublic.sh
        release_boinc.sh

David  Jan 10 2009
    - client: work_req_seconds is CPU req, not max(CPU req, CUDA req).
        In order to work with the 6.7 client,
        projects with both CUDA and CPU jobs must use the newest scheduler code.

    client/
        work_fetch.cpp

David  Jan 11 2009
    - scheduler: if a Windows host has a GPU slower than 60 GFLOPS,
        don't send it CUDA jobs (they may cause BSOD);
        send user a message to this effect

    sched/
        sched_plan.cpp
        sched_send.cpp
        server_types.h

David  Jan 12 2009
    - lib: check return values of RSA_*() functions.
        Also fix a memory leak, missing RSA_free().
        Fixes #823.

    lib/
        crypt.cpp
        error_numbers.h
        str_util.cpp

Rom    12 Jan 2009
    - WINSETUP: Update custom actions in case the goofy setup
        problems are related to old custom actions.  I don't
        really think this is it, but i'm running out of ideas.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  12 Jan 2009
    - web: add Eric's script for forum RSS

    html/user/
        forum_rss.php

David  12 Jan 2009
    - scheduler, file upload handler: fix server runtime message in FCGI case

    sched/
        file_upload_handler.cpp
        handle_request.cpp
        main.cpp
        sched_util.cpp,h
        server_types.cpp

David  12 Jan 2009
    - scheduler: initialize COPROC fields

    lib/
        coproc.cpp

David  12 Jan 2009
    - scheduler: if we're not sending work because of the user's "no GPUs" pref,
        tell them so.
    - scheduler: fix bug that caused no CUDA jobs to be sent

    lib/
        coproc.cpp,h
        common_defs.h
    sched/
        handle_request.cpp
        sched_send.cpp
        sched_plan.cpp
        server_types.h

David  12 Jan 2009
    - scheduler: bug fixes

    sched/
        handle_request.cpp
        sched_send.cpp

David  12 Jan 2009
    - scheduler: bug fixes

    sched/
        sched_plan.cpp

David  13 Jan 2009
    - GUI RPC: add the following items to PROJECT_CONFIG
        (corresponding to the get_project_config.php web RPC):
        - platforms: list of platforms supported by the project
        - sched_stopped: scheduler disabled
        - web_stopped: DB-driven web features disabled
        - min_client_version
    - GUI RPC: add the following items to CC_STATE:
        - platforms: list of platforms supported by the client
            (this replaces the unused <platform_name>)
    - GUI RPC: add the following items to PROJECT_LIST_ENTRY
        (entry in the "all projects" list):
        - platforms: list of platforms supported by the project
    - GUI RPC: move APP_VERSION pointer from WORKUNIT to RESULT;
        include plan class in APP_VERSION lookup.
        This completes the change of March 2008,
        and allows the Manager to work correctly when a project
        has two different app versions of the same (app, platform, version)
        running on a client at once (e.g., a CPU and a GPU app)
    - get_project_config.php: remove logic that checks client version.
        This page is accessed by PHP, not just by client
    - web: add link to forum page to get forum as RSS

    client/
        cs_statefile.cpp
    clientgui/
        DlgItemProperties.cpp
        MainDocument.cpp
        ViewWork.cpp
        sg_ViewTabPage.cpp
    html/user/
        get_project_config.php
        forum_rss.php
        forum_forum.php
        img/feed_logo.png (new)
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

David  13 Jan 2009
    - client: GPU bug fix; compile warning fixes

    client/
        client_types.cpp
    clientgui/
        BOINCTaskBar.cpp
    lib/
        filesys.cpp
        parse.cpp

David  13 Jan 2009
    - GUI RPC: finish the changed started above;
        update the way that app versions are identified.

    Old: WORKUNIT contains version_num
        RESULT contains app_version_num (but only if running)

    New: Keep old fields so new client works with old manager.
        RESULT contains version_num, plan_class
        Manager: if RESULT doesn't have version/plan_class
        (because talking to old client)
        look up app version based on WU version num.

    clientgui/
        BOINCTaskBar.cpp
        sg_ViewTabPage.cpp
        MainDocument.cpp
        DlgItemProperties.cpp
        ViewWork.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h
        
Eric   13 Jan 2009
    - STILL WORK TO BE DONE TO GET locale STUFF INSTALLED PROPERLY!!!
    - Update to libtool 1.5.24
    - build environment:  Major automake changes that I've been warning about
      for some time.
    - Now uses libtool to build libraries.
    - Builds separate boinc_fcgi and sched_fcgi libraries for use with 
      FCGI server components.
    - New macro "BOINC_CHECK_LIB_WITH" that executes a "AC_CHECK_LIB" on
      a library only if --with-libname[=DIR] is specified on the configure
      command line.  This is to allow inclusion of libraries when the 
      ssl, gtk, wxWidgets, or other configuration is incorrect for static
      libraries.
    - Added a lot of "--with-*" for some libraries that might be required for
      static builds.
    - The sea directory has been moved to packages/generic.  Changes to sea
      and the associated scripts might be required to better make use of the
      staging mechanism and shared libraries.
    - Fixed includes of boinc_fcgi.h in many files.
    - Fixed places where FCGI_FILE needs to be used implicitly.
    - Fixed missing define of _SC_PAGESIZE on hosts that define only
      _SC_PAGE_SIZE.
    - Moved build of boinc_cmd (and source file) from lib to client
    

  ltmain.sh
  config.guess
  config.sub
  Makefile.incl
  m4/
      sah_check_lib.m4
      check_ssl.m4
      boinc_gtk.m4 (new)
      boinc_check_lib_with.m4 (new)
      libcurl.m4
      boinc_wxwidgets.m4
  sea/ (moved to packages/generic/sea)
  packages/ (new)
      generic/ (new)
          sea/ (new)
        Makefile.am
  client/
      Makefile.am
      hostinfo_unix.cpp
  sched/
      edf_sim.cpp
      sched_shmem.h
      sched_msgs.h
      sched_msgs.cpp
      sched_send.cpp
      handle_resuest.cpp
      file_upload_handler.cpp
      main.cpp
      sched_assign.cpp
      Makefile.am
  lib/
      boinc_cmd.cpp (moved to client)
      diagnostics.cpp
      prefs.cpp
      msg_log.h
      cert_sig.cpp
      Makefile.am
  zip/
      Makefile.am
  samples/
      example_app/
          Makefile
  api/
      Makefile.am
  clientgui/
      Makefile.am
  tools/
      backend_lib.cpp
      Makefile.am
  doc/
      manpages/
          Makefile.am

David  13 Jan 2009
    - client/manager fixes

    client/
        client_types.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

David  14 Jan 2009
    - client: fix bug that caused estimated time to completion to increase
        while processing suspended
        Fixes #825

    client/
        app_control.cpp

David  14 Jan 2009
    - client: clamp long term debts to +- 1 week
    - client: fix CUDA debt calculation
    - client: don't accumulate debt if project->dont_request_more_work
    - client: improves messages

    client/
        rr_sim.cpp

Rom    15 Jan 2009
    - WINSETUP: Fix the problem introduced where Enable Application
        execution wasn't working.
        
    win_build/installerv2/
        BOINC.ism
        BOINCx64.ism

Rom    15 Jan 2009
    - MGR: Don't convert strings to ANSI juts to have to reconvert them
        back to Unicode.  Fix several help link issues.
        Fixes #826
        
    clientgui/
        AdvancedFrame.cpp
        DlgAdvPreferences.cpp
        sg_BoincSimpleGUI.cpp
        sg_DlgMessages.cpp
        sg_DlgPreferences.cpp
        sg_ProjectsComponent.cpp

David  15 Jan 2009
    - scheduler: improve message formatting; add <debug_locality> flag
        for locality scheduling messages

    lib/
        msg_log.cpp
    sched/
        *.cpp

David  15 Jan 2009
    - GUI RPC: add CUDA info to PROJECT struct
    - manager: display CUDA info in project properties page
    - manager: use struct assignment instead of copy() function

    client/
        boinc_cmd.cpp
    clientgui/
        AsyncRPC.cpp
        DlgItemProperties.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

David  15 Jan 2009
    - scheduler: remove clause in app_plan() that withholds jobs from slow GPUs.
        The SETI@home/CUDA app has been fixed so that it works on all GPUs.

    sched/
        sched_plan.cpp

Eric   15 Jan 2009
    - build:  Made static linkage of BOINC libraries the default for client,
      manager, and server components

    configure.ac
    tools/
        Makefile.am
    clientgui/
        Makefile.am
    client/
        Makefile.am
    samples/
        example_app/
        Makefile

Charlie Jan 15 2009
    - client: boinc_copy ownership fix of 1/6/09 didn't work because it used 
        system(cp ...) call, which invokes a shell, and POSIX specifies that 
        shells run from an application use the real UID and GID not the 
        effective UID and GID.  Under Mac Sandbox security, we need to use 
        the effective UID and GID.  Changed boinc_copy to copy file directly.
    - MGR: On Mac, fix problems showing Manager window when it was minimized 
        to Dock, especially if window was closed using Dock menu.
    - Mac: Fix XCode project for boinc_cmd.cpp moved to client/ from lib/.
    
    client/
        app_start.cpp
    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.h
        BOINCTaskBar.cpp
    lib/
        filesys.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  16 Jan 2009
    - client: remove limits on LTD.

    client/
        work_fetch.cpp

David  19 Jan 2009
    - scheduler: remove the config flag <have_cuda_apps>,
        and add <cuda_multiplier>.
        The latter is used in calculating max jobs/day for a host;
        namely, it's host.max_results_day * (NCPUS + NCUDA*cuda_multiplier).
        Set it to 10 or so if you have CUDA apps.
    - scheduler: don't overload effective_ncpus();
        instead, add two new functions,
        max_results_day_multiplier() and max_wus_in_progress_multiplier()
    - scheduler: don't reduce max_results_day if we get an aborted job
        (it might have been aborted by the project;
        not appopriate to punish host in this case)

    db/
        boinc_db.h
    sched/
        main.cpp
        sched_config.cpp,h
        sched_result.cpp
        server_types.h

David  20 Jan 2009
    - client: fix messages

    client/
        rr_sim.cpp
        work_fetch.cpp

David  20 Jan 2009
    - scheduler: improve no-work messages
    - web: don't use DB conn in mysql_real_escape_string()
        (otherwise won't work if DB is down)

    html/inc/
        boinc_db.inc
        db_conn.inc
    sched/
        sched_plan.cpp.h
        sched_send.cpp
        server_types.h

Charlie Jan 20 2009
    - Mac client: fix bug in build script so that curl-7.19.2 actually 
        does build with c-ares 1.6.0.  Fixes #830.
    
     mac_build/
        buildcurl.sh

David  21 Jan 2009
    - scheduler: accept CUDA version 1.0

    sched/
        sched_plan.cpp

David  21 Jan 2009
    - client: fetch work from non-CPU-intensive projects

    client/
        work_fetch.cpp,h

David  21 Jan 2009
    - client: compile fix, remove spurious message

    client/
        work_fetch.cpp,h

Rom    21 Jan 2009
    - MGR: Make sure the UI thread doesn't call a GUI RPC
        that uses the SET_LOCALE class.
        
    clientgui/
        BOINCClientManager.cpp

Charlie Jan 22 2009
    - MGR: fix compile error.
        
    clientgui/
        BOINCClientManager.cpp

David  22 Jan 2009
    - client: if an app has avg_ncpus < 1, run it at above-idle priority
        even if it doesn't use a coprocessor.
    - scheduler: added an "nci" (non CPU intensive) plan class
        to sched_plan.cpp.  It declares the use of 1% of a CPU.

    The above two changes are intended to allow the QCN app to
    run at above_idle priority, which it needs in order to do 500Hz polling.

    - API: the std::string version of boinc_resolve_filename()
        acts the same as the char[] version.

    client/
        app.cpp
        app_start.cpp
    lib/
        app_ipc.cpp
        gui_rpc_client.cpp
    sched/
        sched_plan.cpp

David  22 Jan 2009
    - web: when using adaptive replication, show a WU's instances
        if it has a canonical result, not if it's been assimilated
        (if the assimilator is not working, the latter causes
        WUs to be hidden longer than needed)

    html/user/
        workunit.php

David  22 Jan 2009
    - client: simplify message describing scheduler request;
        to get work request details, use <sched_op_debug>

    client/
        scheduler_op.cpp

Eric  22 Jan 2009
    - build: reordered compiler flags checking.
        Fixed problems with finding location of wx-config
        when running with cached configuration.
        Made sure to check ${prefix}/lib when looking for
        libGL, libGLU, and libglut.

    m4/
        boinc_wxwidgets.m4
        ax_check_glut.m4
        ax_check_glu.m4
        ax_check_gl.m4
        boinc_set_compile_flags.m4 

David  22 Jan 2009
    - client: when preempting a process, remove it from memory if:
        1) it uses a coprocessor
        2) it has checkpointed since the client started
        3) it's being preempted because of a user action
            (suspend job, project, or all processing)
            or user preference (time of day, computer in use)
    - scheduler: if shared mem seg doesn't exist,
        report it and don't crash

    client/
        app.h
        app_start.cpp
        app_control.cpp
        cpu_sched.cpp
    sched/
        main.cpp

Charlie Jan 22 2009
    - client sandbox: add details in switcher_exec "execv failed" message.
    - MGR: Work around bug in generic list control GetSelectedItemCount() 
        which caused incorrect update of buttons in Projects tab after 
        detching from a project; remove redundant UpdateSelection() call.
        
    client/
        sandbox.cpp
    clientgui/
        BOINCBaseView.cpp
        BOINCListCtrl.cpp,.h

David  23 Jan 2009
    - client: clear debts when reset project
    - client: respect work-fetch backoff for non-CPU-intensive projects
    - client: for non-CPU-intensive project, fetch new job
        if no currently running jobs
    - client: skip non-CPU-intensive projects in debt calculations
    - manager: show resource backoff times correctly

    client/
        app_control.cpp
        client_state.cpp
        client_types.cpp,h
        work_fetch.cpp,h
    clientgui/
        DlgItemProperties.cpp

David  23 Jan 2009
    - scheduler: for plan class "nci", set flops to CPU speed;
        this will give consistent completion time estimates for existing WUs.

    sched/
        sched_plan.cpp

David  23 Jan 2009
    - scheduler: fix spurious error message when using nci

    sched/
        sched_plan.cpp,h
        sched_send.cpp

David  23 Jan 2009
    - web: fix apps.php so that it knows about plan class

    html/user/
        apps.php

David  23 Jan 2009
    - API: possible compile fix for OS/2

    api/
        boinc_api.cpp

David  23 Jan 2009
    - scheduler: reduce frequency of calls to work_needed()

    sched/
        sched_array.cpp
        sched_send.app

David  23 Jan 2009
    - scheduler: make NCI app versions preferable to non-plan-class

    sched/
        sched_plan.cpp

David  23 Jan 2009
    - scheduler: if client can't do plan class, don't complain about old client

    sched/
        sched_send.cpp

Charlie Jan 23 2009
    - MGR: Remove override of GetSelectedItemCount() introduced yesterday;  
        instead, call DeleteItem() rather than SetItemCount() when number of 
        rows has been reduced, to allow virtual ListCtrl adjust its list of 
        selected rows (and thus keep its count in sync with reality.)
        
    clientgui/
        BOINCBaseView.cpp
        BOINCListCtrl.cpp,.h

David  23 Jan 2009
    - scheduler: initialize global

    sched/
        handle_request.cpp

David  23 Jan 2009
    - scheduler: if anonymous platform, ignore coprocessor requests
        (since anonymous platforms apps are treated as CPU)

    sched/
        sched_send.cpp
        server_types.h

Janus    25 Jan 2009
    - Fixed a major bug in the translation system which was causing a lot
      of people to receive the webpages in semi-random languages.
    - Added the ability for projects to decide whether they want the
      Q&A and Message Boards merged.

    html/
        inc/
        translation.inc
    user/
        forum_index.php
    project_sample/
        project.inc

David  25 Jan 2009
    - client: don't request work for a resource if it has no shortfall.
    - client and server: get rid of coproc_cuda global.

    client/
        client_state.cpp,h
        work_fetch.cpp,h
    lib/
        coproc.cpp,h
    sched/
        handle_request.cpp
        sched_send.cpp
        server_types.cpp,h

Rom    26 Jan 2009
    - MGR: Don't use wxT() to describe parameters passed to GUI RPCs.
    
    clientgui/
        BOINCClientManager.cpp

David  26 Jan 2009
    - client: if we're doing an RPC (for whatever reason)
        to a non-CPU-intensive project without a job, ask for one.

    client/
        work_fetch.cpp

Charlie Jan 26 2009
    - MGR: In CBOINCClientManager::StartupBOINCCore() allow time for Client
        to start up, to avoid repeated attempts which put spurious messages
        "Another instance Another instance of BOINC is running" in 
        stderrdae.txt.
        
    clientgui/
        BOINCClientManager.cpp

David  27 Jan 2009
    - client: change the LTD policy so that
        1) net adjustment for eligible projects is zero;
        2) max LTD is zero
    - scheduler: fix msgs so disk size is shown in GB

    client/
        work_fetch.cpp
    sched/
        sched_send.cpp

Eric K 27 Jan 2009
    - SEA:  Fixed problems building SEA
    - Manager:  Fixed missing includes when building manager on unix.
    
    configure.ac
    packages/
        generic/
            sea/
                Makefile.am
                make-tar.sh
    clientgui/
        BOINCClientManager.cpp


David  27 Jan 2009
    - scheduler: in get_app_version(), if we previously sent a CUDA app,
        but we don't need to send any more CUDA jobs,
        delete the BEST_APP_VERSION record and look for another app version.
        This lets the scheduler send both CUDA and CPU app versions
        for a given app in a single RPC.

    client/
        work_fetch.h
    sched/
        sched_send.cpp

David  27 Jan 2009
    - client: if we're making an RPC to a project because of user request,
        clear the resource backoff times so that we potentially
        can ask the project for work.

    client/
        cs_scheduler.cpp
        work_fetch.cpp

Eric K 27 Jan 2009
    - Manager: fixes to allow compilation on compilers that don't allow string
      concatenation within the _() macro.

    clientgui/
        WelcomePage.cpp
    ProxyInfoPage.cpp

David  27 Jan 2009
    - lib: comment out perror()s in connection code.

    lib/
        gui_rpc_client.cpp

David  27 Jan 2009
    - client: remove the "deadlines_missed" and "overworked"
        clauses from RSC_WORK_FETCH::choose_project()

    client/
        work_fetch.cpp,h

David  27 Jan 2009
    - scheduler: don't count host as reliable if avg_turnaround is zero
    - client: restore notion of overworked;
        if a project is overworked for a resource R,
        don't fetch work for R unless there are idle instances

    client/
        work_fetch.cpp,h
    sched/
        sched_send.cpp

David  28 Jan 2009
    - GUI RPC: the "get all projects" RPC now also returns account managers

    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

Charlie Jan 28 2009
    - GUI RPC: Fix compiler warning (missing return value).

    lib/
        gui_rpc_client_ops.cpp

Rom    Jan 29 2009
    - MGR: Provide a way for skin creators to suppress error messages for
        missing resources.
        
    clientgui/
        SkinManager.cpp

Rom    Jan 29 2009
    - MGR: Save and Restore the last email address/user id used to attach
        to a project or account manager
    
    clientgui/
        AccountInfoPage.cpp

David  29 Jan 2009
    - web: anywhere we show info about a host, show its GPUs too
    - web: add script to parse GPU completed-job log
        and generate summary data;
        also add page to display this data.

    html/
        inc/
            host.inc
        ops/
            analyze_coproc_log.php
        user/
            hosts_user.php
            show_coproc.php

David  29 Jan 2009
    - client: if user requests RPC, do it even if project is backed off
    - manager: show backoff interval correctly

    client/
        cs_scheduler.cpp
        work_fetch.cpp
    clientgui/
        DlgItemProperties.cpp

David  29 Jan 2009
    - scheduler: get effective RAM sizes and running fraction just once

    sched/
        sched_send.cpp
        server_types.h

David  29 Jan 2009
    - client: update LTD correctly

    client/
        work_fetch.cpp

Rom    29 Jan 2009
    - MGR: Add a virtual list box to display available account managers.
    
    clientgui/
        AccountManagerInfoPage.cpp, .h
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        ProjectInfoPage.cpp, .h
        WizardAccountManager.cpp
    lib/
        gui_rpc_client_ops.cpp

Rom    29 Jan 2009
    - MGR: Filter project list so that it shows only projects supported
        by the core client.
        
    clientgui/
        ProjectInfoPage.cpp, .h

Charlie Jan 29 2009
    - MGR: call UpdateSelection() from OnListRender() instead of from 
        RestoreSelections().  Fixes #837.

    clientgui/
        BOINCBaseView.cpp

Charlie Jan 30 2009
    - MGR: Suppress Skin Manager error messages by default; enable them 
        only if the Manager is launched from the command line with an 
        argument -c or --checkskins.
        
    clientgui/
        BOINCGUIApp.cpp, .h
        SkinManager.cpp, .h

David  30 Jan 2009
    - Work fetch / scheduler:
        There are two mechanisms to prevent the scheduler from
        sending jobs that won't finish by their deadline.
        Simple mechanism:
            The client sends the interval x for which CPUs are projected
            to be saturated.
            Given a job with estimated duration y,
            the scheduler doesn't send it if x + y exceeds the delay bound.
            If it does send it, x is incremented by y.
        Complex mechanism:
            Client sends workload description.
            Scheduler does EDF simulation, sees if deadlines are missed.
            The only project using this AFAIK is BOINC alpha test.
        Neither of these mechanisms takes coprocessors into account,
        and as a result jobs could be sent that are doomed to
        miss their deadline.
        This checkin adds coprocessor awareness to the Simple mechanism.

        Changes:
        Client:
            compute estimated delay (i.e. time until non-saturation)
            for coprocessors as well as CPU.
            Send them in scheduler request as part of coproc descriptor.
        Scheduler:
            Keep track of estimated delays separately for different resources
    - client: fixed bug that computed CPU estimated delay incorrectly
    - client: the work request (req_secs) for a resource is the min
        of the project's share and the shortfall.

    client/
        cs_scheduler.cpp
        rr_sim.cpp
        work_fetch.cpp,h
    html/inc/
        translation.inc
    lib/
        coproc.cpp,h
    sched/
        sched_send.cpp
        server_types.cpp,h

David  30 Jan 2009
    - client: computation of # idle CUDA instances was wrong

    client/
        rr_sim.cpp

David  30 Jan 2009
    - scheduler: show message whether miss or meet deadline

    html/user/
        show_coproc.php
        top_users.php
    sched/
        sched_send.cpp

David  30 Jan 2009
    - client: tweak work fetch messages
    - client: buffer 2000 messages instead of 1000

    client/
        client_msgs.cpp
        work_fetch.cpp
    lib/
        coproc.cpp

David  30 Jan 2009
    - client: work fetch fixes

    client/
        work_fetch.cpp
        scheduler_op.cpp

David  31 Jan 2009
    - client: there was a problem with how the round-robin simulator
        worked in the presence of coprocessors.
        The simulator maintained per-project queues of pending jobs.
        When a job finished (in the simulation) it would get
        one or more jobs from that project's pending queue.

        The problem: this could cause "holes" in the scheduling of GPUs,
        and produce an erroneous nonzero shortfall for GPUs,
        leading to infinite work fetch.

        The solution: maintain a separate (per-resource, not per--project)
        queue of pending coprocessor jobs.
        When a coprocessor job finishes,
        start pending jobs from the queue for that resource.

        Another change: the simulator did strict reservation of coprocessors.
        If there are 2 instances of CUDA,
        and a 1-instance job is running in the simulation,
        it wouldn't start an additional 2-instance job.
        This also can cause erroneous nonzero shortfalls.

        So instead, schedule coprocessors like CPUs, i.e. saturate them.
        This can cause distorted completion time estimates,
        but it's better than infinite work fetch.

    client/
        client_types.cpp,h
        rr_sim.cpp,h
        work_fetch.cpp,h

David  1 Feb 2009
    - client: code cleanup

    client/
        rr_sim.cpp,h
        work_fetch.cpp,h

David  2 Feb 2009
    - client: code cleanup

    client/
        rr_sim.cpp,h
        work_fetch.cpp,h

David  2 Feb 2009
    - Manager: change terms for STD, LTD
    - web: change script that locks old threads to exempt team forums

    clientgui/
        DlgItemProperties.cpp
    html/ops/
        autolock.php

David  3 Feb 2009
    - client: fix bug that caused infinite sched RPCs if project down

    client/
        cs_scheduler.cpp
        scheduler_op.cpp

Rom    3 Feb 2009
    - SCROPENGL: Checkin the files needed for the new OpenGL based
        BOINC screensaver.
        
    clientscr/
        boinc_ss_opengl.h
        boinc_ss_opengl.rc
        screensaver_opengl.cpp
        screensaver_opengl.h
    win_build/
        boinc.sln
        boinc_ss_opengl.vcproj

David  3 Feb 2009
    - renamed boinc_ss_opengl to ss_app

David  3 Feb 2009
    - GUI RPC: made password file read into function
    - lib: minimized FCGI library

    client/
        boinc_cmd.cpp
        file_names.h
    lib/
        gui_rpc_client.cpp,h
        common_defs.h
        Makefile.am

Charlie Feb 4 2009
    - SS: Begin work on upgrading screensaver coordinator for new functionality:
        - add filenames for ss config file and default OpenLG ss executable
        - add sandbox security support for these 2 files.

    client/
        check_security.cpp
        file_names.h
    clientgui/
        mac/
            SetupSecurity.cpp
    mac_build/
        Mac_SA_Secure.sh

Rom    5 Feb 2008
    - MGR: Display all projects in the project list but disable the text control
        is the project doesn't list a supported platform.  If the user clicks
        on it display a message box stating that once attached the user may not
        get any work.
        
    clientgui/
        AccountManagerInfoPage.cpp
        ProjectInfoPage.cpp, .h
        ProjectListCtrl.cpp, .h

Charlie Feb 5 2009
    - SS: Implement basic new functionality in screensaver coordinator.
        - Note: this is tested on Mac only at this point.
    - SS: Add ss_app to XCode Project, with a temporary icon.

    client/
        check_security.cpp
        file_names.h
    clientscr/
        screensaver.cpp, .h
        mac_app_icon.h (added)
        Mac_Saver_Module.h
        screensaver_win.h
    lib/
        common_defs.h
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  5 Feb 2009
    - manager: use sprintf() instead of WxString::Printf()
        when copying messages to clipboard, and use tab instead of |

        NOTE TO ROM: use WxWidgets features only where necessary.
        E.g., for a time that's not going to be displayed,
        use double instead of WxDateTime

    clientgui/
        ViewMessages.cpp

Rom    5 Feb 2009
    - MGR: Back out David's change which broke clipboard functionality
        on Linux.  Take care of the real performance problem with
        copying 20000+ records to the clipboard in a Debug build
        by pre-allocating the buffer.
        
    clientgui/
        ViewMessages.cpp, .h

David  5 Feb 2009
    - client: redefine "overworked" as
        debt < -1.5 * work_buf * cpu_sched_period
    - web: on team page, link to cross-project team stats sites

    api/
        graphics2_win.cpp
    client/
        work_fetch.cpp
    html/
        inc/
            stats_sites.inc
            team.inc
        user/
            team_display.php

Rom    5 Feb 2009
    - MGR: On newer versions of the wxWidget framework the project list
        wasn't being properly sized, so create it with a fixed size.
        
    clientgui/
        ProjectListCtrl.cpp

David  5 Feb 2009
    - client: when accounting job elapsed time,
        ignore intervals longer than 10 secs;
        that could only happen if the client or host was suspended/hibernated.
    - client: in adjust_debts(), ignore intervals longer than
        2*work fetch period, not 2*CPU sched period.
        adjust_debts() is called from work fetch.

    client/
        app_control.cpp
        client_state.h
        cpu_sched.cpp
        cs_scheduler.cpp
        work_fetch.cpp

David  5 Feb 2009
    - web: added BOINCstats to list of team stats sites

    html/
        inc/
            stats_sites.inc
            team.inc

David  5 Feb 2009
    - web: add links to cross-project host stats sites
        (currently just boincstats)

    html/
        inc/
            hosts.inc
            stats_sites.inc
            util.inc
        user/
            hosts_user.php

David  5 Feb 2009
    - client: if time intervals for debt adjustment or job elapsed time
        are negative, ignore (must be clock reset)

    client/
        app_control.cpp
        cpu_sched.cpp

David  5 Feb 2009
    - web: must have a DB connection before calling mysql_real_escape_string()

    html/inc/
        boinc_db.inc

David  5 Feb 2009
    - web: add another team stats link
    - client: if ncpus is zero in cc_config.xml, honor it.

    client/
        cpu_sched.cpp
        log_flags.cpp
    html/inc/
        stats_sites.inc
        team.inc

David  5 Feb 2009
    - client: it the state file or an RPC reply has an app version
        using a coprocessor we don't know about, ignore it
        (and all results using that app_version will be flushed).
        This deals with the situation where we have some GPU jobs,
        but the GPU card is removed (previously this resulted in a crash).
        This requires some code shuffling so that we check for coprocessors
        before reading state file.

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

David  5 Feb 2009
    - screensaver: flesh out new SS a bit

    clientscr/
        ss_app.cpp

Charlie Feb 5 2009
    - SS: Continue work on screensaver coordinator.
    - SS: Fix ss_app compile errors on Mac.

    clientscr/
        screensaver.cpp
        mac_saver_module.cpp
        Mac_Saver_Module.h
        screensaver_win.h
        ss_app.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  5 Feb 2009
    - web: fix bug in cached user page stuff from 12/29/08

    client/
        time_stats.cpp
    html/
        inc/
            pm.inc
            user.inc
        user/
            show_user.php

Charlie Feb 5 2009
    - SS: Screensaver coordinator reads ss_config.xml file.
    - SS: If coordinator runs default screensaver during science phase because 
        no science graphics are available, then shorten the next default 
        graphics phase by that much time. 

    clientscr/
        screensaver.cpp, .h
        Mac_Saver_Module.h
        screensaver_win.h
        ss_config.xml (added)

David  6 Feb 2009
    - web: don't show x-project links for anonymous hosts; fix &bull's

    html/inc/
        host.inc
        user.inc

Rom    7 Feb 2009
    - MGR: fix build break for GCC based compilers.
    
    clientgui/
        ProjectInfoPage.cpp

David  8 Feb 2009
    - web: remove <nobr> around user links; doesn't play well
        with long user names
    html/inc
        util.inc

David  9 Feb 2009
    - client: all scheduler RPCs except user request are subject to backoff.
    - client: if a project-requested RPC doesn't return work,
        don't do resource backoff.
    - client: if a user-requested scheduler RPC errors out, clear the request

    client/
        cs_scheduler.cpp
        scheduler_op.cpp
        work_fetch.cpp

Charlie 10 Feb 2009
    - SS: Fix new screensaver coordinator to work properly on Windows.

    clientscr/
        Mac_Saver_Module.h
        screensaver.cpp
        screensaver_win.h

David  10 Feb 2009
    - client: add SCHEDULER_OP::rpc_failed();
        this gets called when the op fails,
        either at initialization or later on;
        it clears the project's sched_rpc_pending flag if needed.
        This fixes a bug that caused user-requested RPCs
        to retry every 10 seconds
        when the network is down.
    - client: if debt-adjust period is too long, reset accounting.
        Otherwise we'll get this infinitely.
    - API: all optional alpha argument to TEXTURE_DESC::draw()


    api/
        gutil.cpp,h
    client/
        cpu_sched.cpp
        file_xfer.cpp
        gui_http.cpp
        http_curl.cpp,h
        scheduler_op.cpp,h
    clientscr/
        ss_app.cpp

David  10 Feb 2009
    - client: if master file doesn't have URLs, clear RPC request

    client/
        work_fetch.cpp
        cs_scheduler.cpp
        scheduler_op.cpp

David  10 Feb 2009
    - client: show proxy info correctly on startup
    - client: fix minor bug that produced spurious
        adjust debt interval too long messages when zero projects

    client/
        client_state.cpp
        cpu_sched.cpp
        cs_scheduler.cpp

Charlie 11 Feb 2009
    - SS: Fix new screensaver coordinator sandbox permissions.
    - ss_app: Replace temporary icon with standard BOINC icon.
    - ss_app: Fix compiler warning.
    - lib: add time stamps to BOINCTRACE on non-Windows systems.

    client/
        check_security.cpp
    clientgui/
        mac/
            SetupSecurity.cpp
    clientscr/
        mac_app_icon.h
    lib/
        diagnostics.cpp
    mac_build/
        Mac_SA_Secure.sh

David  11 Feb 2009
    - client: change the formula for debt update
        so that largest debt among eligible projects tends towards zero
    - client: change definition of "overworked"; debt must be < 1 day

    client/
        work_fetch.cpp

David  11 Feb 2009
    - client: change garbage collection so that an app version
        is deleted only if there's another version *of the same plan class*
        with a higher version number

    client/
        client_state.cpp

David  11 Feb 2009
    - client and API: eliminate dynamically-allocated parts of GLOBAL_PREFS.
        This fixes a double-free bug in the API.

    lib/
        prefs.cpp,h

David  11 Feb 2009
    - boinc_zip: put null arg at end of argv.
        Fixes crashing bug.
        From Michael Tyka.

    zip/
        boinc_zip.cpp
        unzip/
            unzip.c

Rom    11 Feb 2009
    - MGR: Check to see if the app version pointer is legit before attempting
        to use it.
        
    clientgui/
        ViewWork.cpp

David  11 Feb 2009
    - lib: implement APP_INIT_DATA::copy() with assignments instead of
        memcpy().  This protects against any future double-free bugs.

    lib/
        app_ipc.h,cpp

Rom    11 Feb 2009
    - MGR: Remove remaining UI thread calls to setlocale which could
        confuse the parsing system or vise versa.
        
    clientgui/
        AdvancedFrame.cpp
        DlgItemProperties.cpp
        ViewWork.cpp

David  11 Feb 2009
    - client, API: populate APP_INIT_DATA::hostid.
        Remove userid and teamid fields, since the client doesn't know these.

    client/
        app_start.cpp
    lib/
        app_ipc.cpp,h

Charlie 11 Feb 2009
    - SS: Graphics executables need a Mac icon only if they can be run in 
        a window, to allow the user to bring it to the front or control it.  
        Since the new boincscr app runs only as a screensaver, the Dock is 
        not visible when it is running so there is no reason to have an icon.
        So restore the previous permissions settings (non-writable).
    - ss_app: Remove code which adds a Mac icon.
    - ss_app: Fix compiler warning.
    - ss_app: Change Windows build executable file name to boincscr.exe.

    client/
        check_security.cpp
    clientgui/
        mac/
            SetupSecurity.cpp
    clientscr/
        mac_app_icon.h (deleted)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
        Mac_SA_Secure.sh
    win_build/
        ss_app.vcproj

Charlie 12 Feb 2009
    - SS: Continue refining screensaver coordinator logic.

    clientscr/
        screensaver.cpp

David  12 Feb 2009
    - client: debt_eligible() was returning false if the backoff was max.
        This can lead to a situation where a project never gets work.
        Remove that clause.

    client/
        work_fetch.cpp

David  12 Feb 2009
    - client, web: add preference for not using GPU while computer busy

    client/
        cpu_sched.cpp
    html/inc/
        prefs.inc
    lib/
        prefs.cpp,h

David  12 Feb 2009
    - client: bug fix for GPU pref

    client/
        cpu_sched.cpp
        sim.h
    lib/
        prefs.cpp

Charlie 13 Feb 2009
    - ss_app: Under sandbox security, set boincscr permissions the same as 
        for BOINC Manager: setgid to boinc_master but do not setuid; this 
        allows the screensaver coordinator to kill boincscr but still gives 
        boincscr access to GUI RPC password file and so to all GUI RPCs.
    - SS: On Windows, add code to get paths to BOINC data and executable 
        directories from Windows registry; expects boincscr in BOINC  
        executable directory and ss-config.xml in BOINC data directory.

    client/
        check_security.cpp
    clientgui/
        mac/
            SetupSecurity.cpp
    clientscr/
        screensaver.cpp
        screensaver_win.cpp,.h
    mac_build/
        Mac_SA_Secure.sh

David  13 Feb 2009
    - GUI RPC: "get prefs" RPC was messed up by yesterdays's checkin;
        also, change all bools to <foo>0|1</foo> rather than <foo/>

    lib/
        prefs.cpp

David  13 Feb 2009
    - Manager: add GPU preference to advanced prefs dialog

    clientgui/
        DlgAdvPreferences.cpp
        DlgAdvPreferencesBase.cpp,h

David  13 Feb 2009
    - client: fix bug where master fetch failure doesn't clear request flag,
        leading to infinite retry without backoff

    client/
        scheduler_op.cpp,h

David  13 Feb 2009
    - client: fix bug in time-of-day limit prefs (both CPU and network)

    lib/
        prefs.cpp,h

David  13 Feb 2009
    - GUI RPC: add master_url and local_revision to PROJECT_CONFIG struct.
        The former will allow the Manager to verify project URLs

    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

Charlie 13 Feb 2009
    - SS: On Windows, make path strings Unicode compatible in ss coordinator.

    clientscr/
        screensaver.cpp

Rom    16 Feb 2009
    - WINBUILD: Remove ReleaseSigned build depends.
    - WINBUILD: Add NVAPI to the list of static libraries to include during
        the build process.  Driver version detection.
        
    /
        <Various Files>

David  16 Feb 2009
    - client: detect NVIDIA driver version number, show it on startup,
        and include it with CUDA coprocessor descriptor in request msgs

    lib/
        coproc.cpp,h
    win_build/
        libboinc.vcproj

Charlie 16 Feb 2009
    - client: fix compile break on Mac.

    lib/
        coproc.cpp

David  16 Feb 2009
    - client: add a debug flag <dcf_debug> for seeing changes in DCF
    - scheduler: add a limit on NVIDIA driver version for CUDA apps
        (default 17500)

    client/
        work_fetch.cpp
        log_flags.cpp,h
        cpu_sched.cpp
    sched/
        sched_send.cpp
        sched_plan.cpp,h

David  17 Feb 2009
    - client: don't ignore jobs with fraction_done=1 (but still running)
        in RR simulation; we may need to mark them as deadline miss.
    - web: replace & with &amp; various places

    client/
        rr_sim.cpp
    html/
        inc/
            prefs.inc
            results.inc
            stats_sites.inc
        ops/
            update_profile_pages.php
        user/
            edit_forum_preferences.php
            edit_passwd_form.php
            hosts_user.php
            pm.php
            prefs_remove.php
            profile_menu.php
            top_hosts.php
            top_teams.php
            top_users.php

David  18 Feb 2009
    - client: if "no more work" checked, don't request more work (duh!)

    client/
        work_fetch.cpp
    tools/
        make_project

David  18 Feb 2009
    - client: adjust debts at least every minute.
        This fixes a bug that can cause debts to NEVER get updated.
    - client: added "abort_jobs_on_exit" feature
        (available by --abort_jobs_on_exit cmdline
        or <abort_jobs_on_exit> in cc_config.xml).
        If set, when the client is exited by user request
        (this includes signals on Unix)
        it marks all pending jobs as aborted,
        and does a scheduler RPC to all projects with jobs.
        When these are completed the client exits.
        This is useful when BOINC is being used on grids
        where it is wiped clean after each run.

    client/
        client_state.cpp,h
        cpu_sched.cpp
        cs_cmdline.cpp
        cs_prefs.cpp
        cs_scheduler.cpp
        log_flags.cpp
        main.cpp
        work_fetch.cpp
    lib/
        error_numbers.h

David  18 Feb 2009
    - web tweaks

    html/
        inc/
            host.inc
            result.inc
        user/
            workunit.php
            result.php

David  19 Feb 2009
    - scheduler: make host.p_features available to app_plan()

    db/
        boinc_db.h
    sched/
        server_types.cpp

David  19 Feb 2009
    - web: in lists of tasks, give the option of showing names instead of IDs

    html/
        inc/
            host.inc
            result.inc
        user/
            results.php
            workunit.php

David  19 Feb 2009
    - client: add more info to <work_fetch_debug> messages

    client/
        work_fetch.cpp

David  19 Feb 2009
    - client: don't complain that master URLs differ if it's only in case

    client/
        cs_scheduler.cpp

Charlie 19 Feb 2009
    - screensaver: Implement --test and --retry_connect command-line arguments
        as requested by Rom.

    clientscr/
        ss_app.cpp

Charlie 20 Feb 2009
    - screensaver: Implement new screensaver coordinator logic as requested by Rom:
        If the coordinator cannot connect to the core client:
            - coordinator retries connecting every 10 seconds 
            - coordinator launches the default graphics application with the 
                argument --retry_connect, so the default graphics app will continue 
                running and will also retry connecting every 10 seconds.
        If the coordinator successfully connected to the core client, it launches the 
            default graphics application without the argument --retry_connect.  If the 
            default graphics application can't connect, it will return immediately 
            with the exit code ERR_CONNECT.  In that case, the coordinator assumes 
            the default graphics app was blocked by a firewall and so the coordinator 
            will run only project (science) graphics.

    clientscr/
        mac_saver_module.cpp
        Mac_Saver_Module.h
        screensaver.cpp,.h
        screensaver_win.cpp,.h
        ss_app.cpp

Charlie 20 Feb 2009
    - lib: Fix build break on Windows.

    win_build/
        libboinc.vcproj
        libboinc_staticcrt.vcproj

David  20 Feb 2009
    - client: if a project is at max backoff for a resource,
        stop accumulating debt if it's at or around zero.
        This prevents other projects from being driven unboundedly negative.
    - client: if the number of overworked projects exceeds the number
        of device instances, clear debts; this indicates that an earlier
        client was buggy and produced bad debt values.

    client/
        client_state.h
        cpu_sched.cpp
        sim.h
        work_fetch.cpp,h

David  20 Feb 2009
    - client: new work-fetch policy:
        1) if an instance is idle, get work from highest-debt project,
            even if it's overworked.
        2) if resource has a shortfall, get work from highest-debt
            non-overworked project
        3) if there's a fetchable non-overworked project with no runnable jobs,
            get from from the highest-debt one.
        (each step is done first for GPU, then CPU)
        Clause 3) is new.
        It will cause the client to get jobs for as many projects as possible,
        even if there is no shortfall.
        This is necessary to make the notion of "overworked" meaningful
        (otherwise, any project with long jobs can become overworked).
        It also maintains as much variety as possible (like pre-6.6 clients).

        Also (small bug fix) if a project is overworked for resource R,
        request work for R only in case 1).

    client/
        work_fetch.cpp,h

David  20 Feb 2009
    - client: remove the "debt repair" mechanism added earlier today.
        There are situations where multiple projects can legitimately
        have large negative LTD on a uniprocessor.
        Instead...
    - client: add <zero_debts> option to cc_config.xml

    client/
        log_flags.cpp,h
        work_fetch.cpp,h

David  20 Feb 2009
    - client: fix bug that can cause no GPU jobs to be scheduled
        even when a GPU is free

    client/
        cpu_sched.cpp

Charlie 20 Feb 2009
    - Update various source files to GPL 3.  Note: I've only updated those 
        files which I created or have been maintaining.  There are many 
        others which still have the GPL 2.1 license.
        
    clientgui/
        mac/
            browser_safari.mm
            MacGUI.pch
            SystemMenu.m
        res/
            macbadgemask.xpm
            macdisconnectbadge.xpm
    clientscr/
        Mac_Saver_ModuleView.m
        screensaver.cpp
    mac_build/
        buildcurl.sh
        buildjpeg.sh
        buildc-ares.sh
        BuildMacBOINC.sh
        buildWxMac.sh
        Make_BOINC_Service.sh
        Mac_SA_Insecure.sh
        Mac_SA_Secure.sh
        setupForBOINC.sh
    mac_installer/
        release_boinc.sh
        release_GridRepublic.sh
        make_GridRepublic.sh
    samples/
        example_app/
            MakeMacExample.sh

David  20 Feb 2009
    - add a few GPL 3 notices

    clientsrc/
        screensaver.cpp
    lib/
        coproc.h
        boinc_fcgi.cpp,h

David  21 Feb 2009
    - client: tweak the LTD calculation so that the largest debt
        always tends towards zero

    client/
        work_fetch.cpp

David  22 Feb 2009
    - client: print message if downloaded file has wrong size
    - client: associate file xfer messages with a project; fixes #848

    client/
        cs_files.cpp
        file_xfer.cpp
        pers_file_xfer.cpp

David  22 Feb 2009
    - client: more instances of showing project with message.  Fixes #848

    client/
        app_start.cpp
        app_graphics.cpp
        file_xfer.cpp
        cs_account.cpp
        cs_scheduler.cpp
        scheduler_op.cpp
        app.cpp
        app_control.cpp

Rom    22 Feb 2009
    - WINSCR: Fix the BOINC text displayed is the screensaver control
        panel applet
    - WINSCR: Get rid of the 'Up to 5 second wait' for the data thread
        to terminate.  Force terminate the thread and clean up the
        graphics app in a clean-up routine.  Forcing the user to wait
        when they return to the system isn't a good idea.
    - WINSCR: Fix screensaver issue where the screensaver locks up
        when the graphics application deadlocks for one reason or
        another.
        
        Create two new threads:
          1. Monitor system for keyboard and mouse events.
          2. Shuffle window z-order positions if needed.
          
        The keyboard/mouse event monitor is isolated from either
          the core client getting stuck in a loop and not returning
          the results of an RPC or the window shuffling code which
          can get stuck if the graphics application dead locks.
          
        The window shuffle code is isolated due to the
          BroadcastSystemMessage() API using something akin to
          SendMessage() which waits for a return value from the
          target windows winproc.  If a graphics application
          deadlocks for one reason or another it'll cause
          the thread to stall.  This isn't terminal and so we
          just wait for the next time the data thread chooses
          a new application and terminates the old one which
          will cause the thread to resume.
          
        This should resolve all outstanding issues with the
          screensaver not exiting when the mouse or keyboard
          is used.
          
    clientscr/
        boinc_ss.rc
        screensaver.cpp
        screensaver_win.cpp, .h
        
David  22 Feb 2009
    - client: fix work-fetch bug that caused infinite fetch;
        cleanup/reorganization of work fetch logic

    client/
        work_fetch.cpp,h

David  22 Feb 2009
    - client: work-fetch bug fix: if we're fetching work for a starved
        project, it most have no runnable jobs for ANY resource.
    - client: work-fetch bug fix: when setting requests in the
        shortfall case, don't request anything if project is backed off
        or overworked for the resource.

    client/
        rr_sim.cpp
        work_fetch.cpp,h

Charlie 22 Feb 2009
    - screensaver: Code consolidation, fix bug terminating default graphics 
        application on screensaver exit.
        
     clientscr/
        screensaver.cpp

David  22 Feb 2009
    - scheduler: include driver version in the CUDA description string
        storing in the database;
    - web: display the above

    client/
        cpu_sched.cpp
        work_fetch.h
    html/inc/
        host.inc
    lib/
        coproc.cpp

Charlie 22 Feb 2009
    - screensaver: Fix a bug I introduced during code consolidation.
        
     clientscr/
        screensaver.cpp
        screensaver_win.cpp

Rom    24 Feb 2009
    - WINSCR: Remove the progress indication code from the coordinator.
        It is now handled by the default screensaver app.
    - WINSCR: Clean-up some of the thread cleanup logic.
    
    clientscr/
        screensaver_win.cpp

Rom    25 Feb 2009
    - WINSCR: Remove unneeded header files
    - SCR: Shuffle headers around so that it'll build on both Windows and
        Mac without having to put in duplicate entries.
        
    clientscr/
        screensaver.cpp

David  25 Feb 2009
    - client: fix bugs in "abort_jobs_on_exit" feature:
        - clear project backoffs when start abort sequence
        - don't back off projects if in abort sequence

    client/
        client_state.cpp
        main.cpp
        scheduler_op.cpp

David  25 Feb 2009
    - boinccmd: fix bug in --set_proxy_settings command
        (it wasn't setting the "use_XXX" flags).  Fixes #776
    - client: you can now include a <proxy_info> element
        in your cc_config.xml options.

    TODO: the whole proxy info thing needs an overhaul:
    - no separate "use_XXX" flags;
        non-empty http_server_name implies using HTTP proxy, etc.
    - merge PROXY_INFO and GR_PROXY_INFO classes
    - use XML_PARSER for parsing
    - no PROXY_INFO element in HTTP_OP; just use gstate.proxy_info

    client/
        boinc_cmd.cpp
        http_curl.cpp
    lib/
        parse.h
        proxy_info.cpp

Rom    25 Feb 2009
    - MGR: Remove the /s parameter from the argument list on Linux
        until we know it is supported.  Fixes #615
        
    clientgui/
        BOINCGUIApp.cpp


Eric K 25 Feb 2009
    - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out
      which of those files to include
    - Modified MAC address check to work on some non-Linux unixes.
      (mac_address.cpp)
    - Added suggested change to "already attached to project" checking.
      (ProjectInfoPage.cpp)
    - changed includes of standard c header files to their c++ equivalents
      (i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
    - replaced "using namespace std;" with more explicit "using std::function" in
      several files.
    - Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
      to the build environment. (boinc_platform.m4,configure.ac)
    - Changed build environment to not use -nostandardlibs unless we are using
      G++ and static linkage is specified. (configure.ac)
    - Added makefiles and package building files for solaris CSW package manager.
    - Fixed bug with attempting to find login name using logname. (configure.ac)
    - Added ifdef HAVE_* protection around some include files commonly found in
      sys.
    - Added support for unified binary for x86_64/i686-pc-solaris.
      (cs_platforms.cpp)
    - generate_host_cpid() now uses MAC address on non-linux unix.
      (hostinfo_network.cpp)
    - Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
      compilers. (boinc_set_compile_flags.m4)
    - Library compiles no longer depend upon the library extension or require
      the library to be prefixed with lib.
    - More fixes for fcgi builds.
    - Added declaration of "struct ether_addr" and ether_ntoa().  Have not yet
      implemented ether_ntoa() for machines that don't have it, or where it is
      buggy.  (unix_util.h)
    - Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
    - Fixed library Makefiles so that all required headers get installed.

    version.h
    configure.ac
    api/
        boinc_api.cpp
        graphics2_unix.cpp
        gutil.cpp
        gutil.h
        gutil_text.cpp
        make_app_icon_h.cpp
        Makefile.am
        reduce_main.cpp
        texfont.cpp
        texture.cpp
        tgalib.h
        x_opengl.cpp
    client/
        app.h
        app_start.cpp
        client_types.h
        cs_account.cpp
        cs_benchmark.cpp
        cs_cmdline.cpp
        cs_platforms.cpp
        cs_scheduler.cpp
        gui_rpc_server.cpp
        gui_rpc_server_ops.cpp
        hostinfo_network.cpp
        hostinfo_unix_test.cpp
        log_flags.h
        scripts/boinc-client.in
        setprojectgrp.cpp
        switcher.cpp
    clientgui/
        ProjectInfoPage.cpp
    clientscr/
        gfx_switcher.cpp
    lib/
        boinc_fcgi.cpp
        boinc_fcgi.h
        boinc_win.h
        common_defs.h
        coproc.cpp
        crypt.h
        diagnostics.cpp
        filesys.cpp
        filesys.h
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
        mac_address.cpp
        Makefile.am
        md5_file.cpp
        mem_usage.cpp
        mfile.cpp
        msg_queue.cpp
        msg_queue.h
        network.cpp
        parse.h
        procinfo_mac.cpp
        procinfo_unix.cpp
        shmem.cpp
        synch.cpp
        unix_util.cpp
        unix_util.h
        util.cpp
    m4/
        boinc_platform.m4
        boinc_set_compile_flags.m4
    packages/
        solaris/
            CSW/
                build_packages.sh
                Makefile.am
                boincclient/
                    boinc.1
                    boinc_client.1
                    boinc-client.conf
                    boinc_cmd.1
                    boinccmd.1
                    depend
                    Makefile.am
                    pkginfo.in
                    postinstall
                    preinstall
                    prototype.in
                boincdevel/
                    depend
                    Makefile.am
                    pkginfo.in
                    prototype.in
                boinclibs/
                    depend
                    Makefile.am
                    pkginfo.in
                    prototype.in
                boincmanager/
                    boinc_manager.1
                    boincmgr.1
                    depend
                    Makefile.am
                    pkginfo.in
                    prototype.in
                boincserver/
                    Makefile.am
    sched/
        census.cpp
        db_purge.cpp
        fcgiapp.h
        file_deleter.cpp
        file_upload_handler.cpp
        handle_request.cpp
        hr_info.cpp
        main.cpp
        Makefile.am
        message_handler.cpp
        sched_config.h
        sched_locality.cpp
        sched_send.cpp
        sched_timezone.cpp
        sched_util.cpp
        server_types.cpp
        time_stats_log.cpp
        time_stats_log.h
        transitioner.cpp
        validator.cpp
    tools/
        dir_hier_move.cpp
        dir_hier_path.cpp
        kill_wu.cpp
        poll_wu.cpp
        updater.cpp
    zip/
        Makefile.am

David  25 Feb 2009
    - client: if you put <host_venue> in global_prefs_override.xml,
        it should select the venue from the network prefs.
        Now it does.

    client/
        gui_rpc_server.cpp
        cs_prefs.cpp

David  25 Feb 2009
    - API: file descriptor leak in obscure case.
        fixes #103

    api/
        texture.cpp

Charlie 25 Feb 2009
    - MGR: Fix compiler warning.
    - lib: Fix compiler error: Please do not use unmatched single quotes 
        (I changed don't to don`t in #warning statement to fix this.)
    clientgui/
        ProjectInfoPage.cpp
    lib/
        mac_address.cpp

David  25 Feb 2009
    - scheduler: slight code cleanup

    sched/
        server_types.h
        sched_*.cpp
        handle_request.cpp
        server_types.cpp

David  25 Feb 2009
    - client: make timeout values into #defines

    client/
        (several).cpp

David  26 Feb 2009
    - client: tag messages with project where possible; fixes #852
    - client: show fetch share rather than run share in wfd message

    client/
        client_types.h
        work_fetch.cpp
        cs_prefs.cpp
        cs_scheduler.cpp
        cpu_sched.cpp

David  26 Feb 2009
    - client: abort jobs that are unstarted and past deadline
    - client: abort runaway jobs based on elapsed time instead of CPU time.
        Specifically, abort jobs for which
        elapsed time > WU.rsc_fpops_bound / app_version.flops
        This policy works for
        1) GPU jobs (which may use little CPU time)
        2) jobs that run but because of bugs use little CPU time
            (e.g., because they're sleeping)
        whereas the old policy didn't.

    client/
        client_state.cpp,h
        app.cpp,h
        app_control.cpp
    lib/
        error_numbers.h
        str_util.cpp

David  26 Feb 2009
    - client: skip the above elapsed-time check for non-CPU-intensive jobs

    client/
        app_control.cpp

Rom    26 Feb 2009
    - MGR: Remove the ability to display graphics on a remote computer,
        or from a remote computer on *nix machines using v5 graphics.
        fixes #674
        
    clientgui/
        ViewWork.cpp

David  26 Feb 2009
    - client: fix bug where if a GPU job is running,
        and a 2nd GPU job with an earlier deadline arrives,
        neither job is executed ever.
        Reorganized things so that scheduling of GPU jobs is
        done independently of CPU jobs.
        The policy for GPU jobs:
        - always EDF
        - jobs are always removed from memory, regardless of checkpoint
        (GPU memory is not paged, so it's bad to leave an idle app in memory)

    client/
        app.cpp,h
        app_start.cpp
        client_state.h
        cpu_sched.cpp
    sched/
        handle_request.cpp

David  26 Feb 2009
    - client: shuffle the startup code to avoid showing wrong prefs info
        on first-time startup.
    - client: don't do an RPC until we've done CPU benchmarks.
        We need the benchmark values to fill in app_version.flops

    client/
        client_state.cpp
        cs_scheduler.cpp

David  26 Feb 2009
    - screensaver: show correct info if CPU throttling;
        show correct window title;
        show "no projects" message.

    api/
        graphics2.h
        graphics2_win.cpp
    clientscr/
        ss_app.cpp

David  26 Feb 2009
    - boinccmd: make --get_messages output more readable

    client/
        boinc_cmd.cpp

Charlie 27 Feb 2009
    - screensaver: remove from the coordinator error codes and messages 
        which will now be handled by default graphics app, add new error 
        codes for problems in default graphics app.
    - Mac screensaver: improve logic to stop drawing BOINC logo when a 
        graphics app covers coordinator window.
    
    clientscr/
        mac_saver_module.cpp
        Mac_Saver_Module.h
        Mac_Saver_ModuleView.m, .h
        screensaver.cpp, .h
        screensaver_win.h

David  27 Feb 2009
    - manager: fix roundoff error in Advanced Prefs; fixes #613

    clientgui/
        DlgAdvPreferences.cpp

Rom    27 Feb 2009
    - MGR: Make CTRL-SHIFT-A the accelerator in the simple GUI that
        switches back to the advanced view.
        refs #147

    clientgui/
        sg_BoincSimpleGUI.cpp, .h

David  27 Feb 2009
    - client: fix bug that could cause scheduler RPC
        to ask for work inappropriately,
        and tell user that it wasn't asking for work.
        Here's what was going on:
        There are two different structures with work request fields
        (req_secs, req_instances, estimated_delay):
        COPROC_CUDA *coproc_cuda
        and
        RSC_WORK_FETCH cuda_work_fetch.
        WORK_FETCH::choose_project() copied from cuda_work_fetch to coproc_cuda,
        but only if a project was selected.
        WORK_FETCH::clear_request() clears cuda_work_fetch but not coproc_cuda.

        Scenario:
        - a scheduler op is made to project A requesting X>0 secs of CUDA
        - later, a scheduler op is made to project B for reason
            other than work fetch (e.g., user request)
        - choose_project() doesn't choose anything,
            so the value of coproc_cuda->req_secs remains X
        - clear_request() is called but that doesn't change *coproc_cuda

        Solution: work-fetch code no longer knows about internals of
            COPROC_CUDA and is not responsible for settings its request fields.
            The copying of request fields from RSC_WORK_FETCH to COPROC
            is done at a higher level,
            in CLIENT_STATE::make_scheduler_request()

        Additional bug fix: estimated_delay wasn't being cleared in some cases.

    client/
        cs_scheduler.cpp
        scheduler_op.cpp
        work_fetch.cpp

David  27 Feb 2009
    - client: RR sim FLOPS estimate for GPU jobs should reflect
        fraction of time BOINC is running.

    client/
        rr_sim.cpp
        work_fetch.cpp

David  1 Mar 2009
    - client: if we're going to do a scheduler RPC for reasons
        other than work fetch (e.g., user request, project request)
        temporarily clear resource backoffs while deciding
        whether to request work.
        The backoffs are there only to delay RPCs,
        and we're going an RPC anyway.

    client/
        work_fetch.cpp

David  1 Mar 2009
    - web: link to 3rd-party signature sources on community prefs page

    html/
        inc/
            stats_sites.inc
        user/
            edit_form_preferences_form.php

David  1 Mar 2009
    - web: fix buggy changeset 17278

    html/user/
        edit_form_preferences_form.php

David  1 Mar 2009
    - manager and GUI RPC: always show resource debt and backoff even if zero;
        also show backoff interval

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

David  2 Mar 2009
    - fix bugs in the above.
    - GUI RPC: remove unused items from get_state RPC: host_info, time_stats,
        net_stats, host_venue

    NOTE: any change to a GUI RPC struct requires changing AsyncRPC.cpp.
    This is undesirable.

    client/
        cs_statefile.cpp
    clientgui/
        AsyncRPC.cpp
    lib/
        gui_rpc_client_ops.cpp

David  2 Mar 2009
    - Manager: scheduling params are not defined for non-CPU-intensive projects;
        don't show them.

    clientgui/
        DlgItemProperties.cpp

Rom    2 Mar 2009
    - Update to OpenSSL 0.9.8j for Win32 and Win64
    
    openssl/
        <Various Files>

David  2 Mar 2009
    - scheduler: replace choose_download_url_by_timezone with
        replace_download_url_by_timezone.
        From Bernd M.

    sched/
        sched_timezone.cpp
        sched_config.cpp,h
        sched_send.cpp

Rom    2 Mar 2009
    - Update to LibCurl 7.19.3 for Win32 and Win64
    
    curl/
        <Various Files>

David  2 Mar 2009
    - scheduler/feeder: add <locality_scheduler_fraction> option;
        lets you intermix locality and job-cache scheduling
        From Bernd M.
    - file_deleter: add --appid option

    sched/
        feeder.cpp
        file_deleter.cpp
        handle_request.cpp
        sched_config.cpp,h
        sched_send.cpp

David  2 Mar 2009
    - scheduler: add <locality_scheduling_sticky_file>
        and <locality_scheduling_workunit_file> options
        From Bernd M.
    sched/
        sched_config.cpp,h
        sched_locality.cpp

Charlie 2 Mar 2009
    - client: Revise Apple idle time detection for compatibility with OS 10.6.

    client/
        hostinfo_unix.cpp
    lib/
        hostinfo.h

Charlie 3 Mar 2009
    - Mac: Update libCurl to 7.19.4.

    mac_build/
        buildcurl.sh
        HowToBuildBOINC_XCode.rtf
        setupForBOINC.sh
        boinc.xcodeproj/
            project.pbxproj

Charlie 3 Mar 2009
    - WINSCR: fix an error I introduced.
    - Mac screensaver: logic to stop Data Management thread even if hung on 
        an RPC.
    
    clientscr/
        mac_saver_module.cpp
        screensaver.cpp, .h
        screensaver_win.cpp

David  3 Mar 2009
    - scheduler: add locality_scheduling arg to add_result_to_reply();
        eliminate the need to diddle around with config.locality_scheduling.

    sched/
        sched_array.cpp
        sched_assign.cpp
        sched_locality.cpp
        sched_resend.cpp
        sched_send.cpp,h

David  3 Mar 2009
    - scheduler: don't need to set wreq->infeasible_only in send_work()

    sched/
        sched_send.cpp

Rom    3 Mar 2009
    - Update to LibCurl 7.19.4 for Win32 and Win64
    
    curl/
        <Various Files>

David  3 Mar 2009
    - client: fix message: "idle instance" => "starved"

    client/
        work_fetch.cpp

David  3 Mar 2009
    - manager: when filtering messages by project,
        show messages not tagged with a project (fixes #852)
    - web: show X-project stats links as icons

    clientgui/
        ViewMessages.cpp
    html/
        inc/
            host.inc
            team.inc
            stats_sites.inc
        user/
            img/
                freedc_icon.png
                boincstats_icon.png
            white.css

David  3 Mar 2009
    - client: change garbage-collect logic.
        old: reference-count files involved in a PERS_FILE_XFER
        new: if a PERS_FILE_XFER refers to an unreferenced file,
            delete it (and the associated FILE_XFER and HTTP_OP if present)
        May fix #366

    client/
        client_state.cpp

David  4 Mar 2009
    - client: run CPU benchmarks and contact ref site if platform changes

    client/
        client_state.cpp

David  4 Mar 2009
    - client: show duration estimates for CPU and CUDA separately
    - web: reverse Reply and Delete buttons in private msg page
        fixes #858

    client/
        cs_scheduler.cpp
    html/user/
        pm.php

David  4 Mar 2009
    - client: get rid of CPU_PESSIMISM_FACTOR; it wasn't actually being used.
    - manager: compile fix for gcc4.4
        (this works on my computer; Rom/Charlie, please verify)

    client/
        rr_sim.cpp
        sim.h
    clientgui/common/
        wxFlatNotebook.cpp

David  4 Mar 2009
    - client: don't allow coproc apps in app_info.xml.
        Otherwise we'll get stuck in a loop where the client asks for CPU work,
        and the scheduler sends jobs for what it thinks is a CPU app
        but is actually a coproc app.

        Eventually we should add coproc info to the app descriptions
        send in scheduler request,
        so that you can use anonymous platform for coproc apps.
        But let's wait on this.

    - scheduler: compile fix for gcc 4.4.  Fixes #854

    client/
        cs_statefile.cpp
    sched/
        sched_driver.cpp
        sched_util.cpp

David  4 Mar 2009
    - client: reorganize and improve the logic for deciding
        when to do a scheduler RPC:
        if user request or acct mgr request, ignore backoff and suspend via GUI;
        in all other cases honor both of these.

    client/
        cs_scheduler.cpp
        scheduler_op.cpp

David  4 Mar 2009
    - scheduler: use simpler variables in HOST_USAGE

    sched/
        server_types.cpp,h
        sched_send.cpp
        sched_plan.cpp

David  5 Mar 2009
    - scheduler: add support for anonymous-platform coproc apps.
        Old: although the request message contained all info
            about the app version (flops, coproc usage etc.)
            the server ignored this info,
            and assumed that all anonymous platform apps where CPU.
            With 6.6 client, this could produce infinite work fetch:
            - client uses anon platform, has coproc app
            - client has idle CPU, requests CPU work
            - scheduler sends it jobs, thinking they will be done by CPU app
            - client asks for more work etc.
        New: scheduler parses full info on anon platform app versions:
            plan class, FLOPS, coprocs.
            It uses this info to make scheduling decisions;
            in particular, if the request is for CUDA work,
            if will only send jobs that use a CUDA app version.
            The <result> records it returns contain info
            (plan_class) that tells the client which app_version to use.
        This will work correctly even if the client has multiple app versions
        for the same app (e.g., a CPU version and a GPU version)

    sched/
        handle_request.cpp
        server_types.cpp,h
        sched_send.cpp

David  5 Mar 2009
    - client: if using anonymous platform, ignore (and complain about)
        app versions in scheduler reply
    - client: when reporting anonymous platform apps in sched request,
        don't include <file_info>s (not relevant to server)

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

David  5 Mar 2009
    - scheduler: parse and return platform name in anon platform apps.
        Otherwise, if an app version has a platform different from
        the client's primary platform, the client won't find it.

    sched/
        server_types.cpp,h

David  5 Mar 2009
    - manager: show version minor numbers as 0n

    clientgui/
        ViewWork.cpp

David  5 Mar 2009
    - client: anon plaform app versions can specify coprocs

    client/
        cs_statefile.cpp

Rom    5 Mar 2009
    - MGR: Remove previous implementations of the already attached
        to projects detection code.
    - MGR: Prevent the user from progressing beyond the project
        selection page if they are already attached to the
        project they are trying to attach to.  Display a dialog
        box telling they are already attached to that project
        and to choose a different project.  This skips a bunch
        of steps if they meant to attach to a different project.
        
    clientgui/
        AlreadyAttachedPage.cpp, .h
        BOINCWizards.h
        ProjectInfoPage.cpp
        ProjectPropertiesPage.cpp, .h
        WizardAttachProject.cpp, .h
    win_build/
        boincmgr_curl.vcproj

Rom    5 Mar 2009
    - MGR: Account for new error code returned by the CC in response
        to a get_project_config.php request.  It was causing the
        wizards to throw a temp unavailable error page instead
        of the not a boinc project page. Fixes #640
        
    clientgui/
        AccountManagerPropertiesPage.cpp
        ProjectPropertiesPage.cpp

Rom    5 Mar 2009
    - MGR: Newer versions of the server-side software publish their
        master url in the response to the get_project_config.php
        request.  If it exists use it over what was specified
        by the user.  Fixes #259
        
    clientgui/
        AccountManagerProcessingPage.cpp
        ProjectProcessingPage.cpp

David  5 Mar 2009
    - scheduler: get work request parameters before resend_lost_jobs();
        otherwise get NaNs for CPU fraction, etc.
    - scheduler: show reasons in English when send job aborts

    html/user/
        top_hosts.php
    sched/
        sched_send.cpp,h
        sched_resend.cpp
        handle_request.cpp

David  5 Mar 2009
    - scheduler: move all send-work setup stuff (including messages)
        into a function that's called before resend_lost_results()

    sched/
        sched_send.cpp,h
        handle_request.cpp

Rom    5 Mar 2009
    - MGR: Saving and Restoring window diminisions is not a Mac only
        operation when starting up or shutting down the client. Increase
        the frequency of the auto-save state timer from 5 minutes to
        5 seconds.  Fixes #69, Fixes #735, Fixes #790, 
    - MGR: Lengthen the connected to client status field. Fixes #632
    - MGR: Properly update the connected to client status field
        even after a change to the simple view. Fixes #688
        
    clientgui/
        AdvancedFrame.cpp
        sg_BoincSimpleGUI.cpp, .h

Rom    5 Mar 2009
    - MGR: Don't display the Simple GUI 'Remove Project' menu item
        if it was attached via an account manager. Fixes #261
    
    clientgui/
        sg_StatImageLoader.cpp

David  5 Mar 2009
    - client: with anonymous platforms, app versions are identified
        by app/platform/version/plan-class, same as normal

    client/
        client_state.cpp

Rom    5 Mar 2009
    - MGR: Set the dial-up and VPN connection list box to a static
        size so that a scroll bar will appear if the number of items
        exceeds the space to display them. Fixes #96
    
    clientgui/
        DlgOptions.cpp

Charlie 5 Mar 2009
    - Mac: Remove obsolete files AlreadyAttachedPage.cpp, .h from 
        XCode project.
    - MGR: On Mac, revert to auto-save frequency of 5 minutes because:
        * The 3 bugs did not occur on the Mac, and 
        * The saved info is written to a file on the Mac, but the file 
            is not flushed to disk until the Manager is closed, so the 
            extra auto-saves have no effect but only waste CPU cycles.
    
    clientgui/
        AdvancedFrame.cpp
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  6 Mar 2009
    - GUI RPC: the Jan 13 checkin removed some items from the
        get_state() reply which are not included in our client interface.
        However, it turns out that BoincView uses these items; put them back.
    - GUI RPC: set_debt() can set CUDA LTD as well as CPU

    client/
        gui_rpc_server_ops.cpp
        cs_statefile.cpp

David  6 Mar 2009
    - scheduler: fix bugs in support for anonymous platform + coprocs
        (app versions don't have a <coprocs> around coproc elements,
        may an oversight but let's stick with it).
        Anyway, I think it's working now.
    - lib: remove "owner" array from COPROC.
        This was used in client to keep track of assignment of
        coprocessors to tasks, but we got rid of the reserve/free scheme.
        NOTE: this breaks the mechanism for passing --device N to apps;
        I'll have to do this another way.  Stay tuned.

    client/
        app_start.cpp
        cpu_sched.cpp
    lib/
        coproc.cpp,h
    sched/
        sched_array.cpp
        sched_send.cpp
        server_types.cpp

Rom    6 Mar 2009
    - MGR: Don't hide the main window after attaching to an account manager
        if we don't support the system tray on that platform. refs #844
        
    clientgui/
        AdvancedFrame.cpp

David  6 Mar 2009
    - client: add a new mechanism for assigning coproc instances to tasks,
        and passing them the corresponding --device N cmdline args.
        This fixes a bug introduced in 17402 (Feb 26)
        that broke the --device feature,
        presumably causing problems on systems with multiple GPUs.

    client/
        app_start.cpp
        client_types.h
    lib/
        coproc.h

David  6 Mar 2009
    - client: fix crash
    lib/
        coproc.h

Charlie 6 Mar 2009
    - client: Fix compiler warning on Mac.

    client/
        app_start.cpp
    
David  6 Mar 2009
    - scheduler: fix bugs that caused only 1 job to be sent

    sched/
        sched_array.cpp
        sched_config.cpp,h
        sched_send.cpp,h
        sched_locality.cpp

David  8 Mar 2009
    - client, GUI RPC: put <host_venue> back in get_state reply;
        it's used by BoincView

    client/
        cs_statefile.cpp

Rom    8 Mar 2009
    - MGR: Fix a long standing bug where the pie control in the
        disk usage tab was being created but a default pie part
        wasn't being added to the control.  This caused the
        control to display black circles during window
        initialization on slower systems.  This issue has been
        around since we started using the pie control based disk
        usage tab.
    
    clientgui/
        ViewResources.cpp

Rom    9 Mar 2009
    - MGR: Set the window size through the window creation routine
        instead of calling SetSize() after the fact.  It removes
        all the flicker out of the Advanced GUI.
    - MGR: Consolidate all the window position restore functionality
        for both the Simple GUI and Advanced GUI in BOINCGUIApp.cpp
        instead of having duplicate copies in each view.
    - MGR: Have the Advanced GUI remember position across restarts.
    - MGR: Create new window events that will save and restore
        window state for both GUIs.  This avoids multiple UI
        updates.  Each time you would change window size from within
        a OnShow or OnSize event it would spawn an update of its own.
        Sometimes certain controls would ignore the event because
        it believed it was already processing the event.
        
    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.cpp, .h
        BOINCGUIApp.cpp
        sg_BoincSimpleGUI.cpp, .h
        ViewStatistics.cpp
    win_build/
        boincmgr_curl.vcproj

Rom    9 Mar 2009
    - MGR: Restore state even if we are not going to display the
        window.  Otherwise when restoring from the system tray
        we'll end up on the resources tab.
    - MGR: Save state before exit.
    
    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp

Charlie 9 Mar 2009
    - MGR: CBOINCBaseFrame::FireRestoreState() calls ProcessEvent() 
        on Mac instead of AddPendingEvent() to avoid displaying Disk 
        tab for an instant when showing the Window on manual launch.
    - MGR: suspend periodic RPCs only when displaying SafeMessageBox() 
        not for all dialogs, so tabs can update during Preferences 
        dialog, etc.

    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.h
        MainDocument.cpp

David  9 Mar 2009
    - scheduler: msg tweak

    sched/
        sched_array.cpp

David  9 Mar 2009
    - client: backoff overrides project-requested scheduler RPC.
        Otherwise, if scheduler is down, we'll retry infinitely every 10 secs
    - client: remove auto_update.poll() (not used)

    client/
        client_state.cpp
        cs_scheduler.cpp
        scheduler_op.cpp

David  11 Mar 2009
    - Manager: show elapsed time instead of CPU time in Task tab.
        CPU time is visible in task Properties.
    - Manager: in task Properties, show final CPU and elapsed times
        if job is finished
    - client: honor backoff for account-manager-requested scheduler RPCs
    - client: keep track of final elapsed time for results
    - GUI RPC: report final elapsed time

    client/
        app_control.cpp
        client_types.cpp,h
        cs_scheduler.cpp
    clientgui/
        DlgItemProperties.cpp
        ViewWork.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

Charlie 12 Mar 2009
    - MGR: Simplify the fixes for saving and restoring window sizes and other 
        settings; eliminate unnecessary new events EVT_FRAME_RESTORESTATE and 
        EVT_FRAME_SAVESTATE, etc; call SaveState() and RestoreState() directly.
    - MGR: Handle EVT_END_SESSION event to call SaveState() on Windows logout 
        or shutdown; this fixes a long-standing problem where current settings 
        were not being saved.

    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.cpp, .h
        BOINCGUIApp.cpp, .h
        sg_BoincSimpleGUI.cpp, .h

Rom    13 Mar 2009
    - MGR: Add the basic infrastructure for the up and comming news tab in
        the advanced frame.
        
    clientgui/
        AdvancedFrame.cpp
        BOINCGUIApp.cpp
        Events.h
        stdwx.h
        ViewNews.cpp, .h (Added)
        ViewResources.cpp
    win_build/
        boincmgr_curl.vcproj

David  16 Mar 2009
    - scheduler: in get_app_version() we check if our current best
        app version is a CUDA app and we don't need more CUDA work.
        Need to do this for CPU as well.

    sched/
        sched_send.cpp

David  16 Mar 2009
    - web: in pages that show results, combine "server state",
        "client state", and "outcome" into a single status.
        The fact that there are three separate status fields
        is an implementation detail that users don't need to see.

    html/
        inc/
            result.inc
        user/
            results.php

David  16 Mar 2009
    - validator utilities: improvements to two_credit()
        (used for deciding how much credit to grant
        when there are 2 valid results).
        From Kevin Reed

    sched/
        validate_util.cpp

David  16 Mar 2009
    - scheduler: app_plan() is not the right place to check for
        "don't use GPU" pref; do it at a higher level

    sched/
        sched_plan.cpp,h
        sched_send.cpp

Charlie 16 Mar 2009
    - MGR: Fix possible deadlock when exiting manager.
    
    clientgui/
        AsyncRPC.cpp

Charlie 17 Mar 2009
    - MGR: Delete RPCThread::OnExit() because it is not called on Windows 
        for some reason.
    - Mac: add new source files ViewNews.cpp, ViewNews.h to XCode Project.
    
    clientgui/
        AsyncRPC.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Eric K  17 Mar 2009
    - Linux: client: Added code to detect capability to run 64-bit binaries
        from 32-bit BOINC client, and capability to run 32-bit binaries on 
    a 64-bit linux system.

    client/
        cs_platforms.cpp

Charlie 17 Mar 2009
    - MGR: CMainDocument::KillRPCThread() defers to RPC thread before testing 
        if thread has exited on its own.
    
    clientgui/
        AsyncRPC.cpp

David  18 Mar 2009
    - client: consider fetching work from overworked projects
        if resource is saturated for < work_buf_min()
        (rather than saturated for 0).
        So now the only significance of "overworked" is that we
        won't ask overworked projects for work if resource is saturated
        more than work_buf_min() but less than work_buf_total()

    client/
        work_fetch.cpp,h

David  18 Mar 2009
    - client: in RR simulation, use app_version.flops
        instead of host_info.fpops as the FLOPS estimate for non-GPU apps.
        I don't see why this would make any difference
        (these two are equal for non-GPU apps)
        but people have reported that this change improves estimates.

    client/
        rr_sim.cpp

David  18 Mar 2009
    - scheduler and web: add a project preference for whether to use the CPU.
        This complements the "use GPU?" pref.
        Neither should be necessary, but what the heck.

    db/
        boinc_db.h
        server_types.cpp,h
        sched_send.cpp
    html/project.sample/
        project_specific_prefs.inc

David  18 Mar 2009
    - web: job lists can be filtered by status

    html/
        inc/
            result.inc
        user/
            results.php

David  19 Mar 2009
    - scheduler: move app-version selection and score-based scheduling
        to new files.

    sched/
        Makefile.am
        sched_version.cpp,h (new)
        sched_score.cpp,h (new)
        various others

David  19 Mar 2009
    - client: work fetch: in RR sim, keep track of the number
        of device instances used by jobs that miss deadline.
        Don't do "variety" work fetch if this is >= # of instances

    client/
        rr_sim.cpp
        work_fetch.cpp,h

Rom    19 Mar 2009
    - client: initial support for detecting the CPU L2 cache
        size on Windows.
        
    client/
        client_state.cpp
        cs_benchmark.cpp
        hostinfo_win.cpp

David  20 Mar 2009
    - client: reduce frequency of writing state file:
        1) multiply checkpoint period by # of cores (or GPUs)
        2) don't write statefile after schedule_cpus()
            (we write it after enforce_schedule() if anything
            started or stopped, and that's all that matters)
    - client: add new log flag <statefile_debug>;
        tells you when and why statefile is written

    client/
        app_start.cpp
        client_state.cpp
        cpu_sched.cpp
        cs_statefile.cpp
        log_flags.cpp,h

David  20 Mar 2009
    - client: add --no_priority_change cmdline arg
        (and <no_priority_change> flag in cc_config.xml).
        If set, run apps at same priority as client.

    client/
        app_start.cpp
        cs_cmdline.cpp
        log_flags.cpp,h

David  20 Mar 2009
    - API (win): TerminateProcess() apparently can return in some cases,
        causing process to go into infinite "no heartbeat" loop.
        Try sleeping for 1 sec, then calling DebugBreak()

    api/
        boinc_api.cpp

David  20 Mar 2009
    - API: add some #ifdef'd debug messages

    api/
        boinc_api.cpp

David  20 Mar 2009
    - web: fix X-project links in Computer page

    html/inc/
        host.inc

David  22 Mar 2009
    - client: garbage collect after scheduler RPC;
        if project sent some irrelevant FILE_INFOs,
        this will avoid starting transfers for them.
    api/
        boinc_api.cpp
    client/
        cs_scheduler.cpp
        gui_rpc_server_ops.cpp
    samples/multi_thread/
        multi_thread.cpp

David  23 Mar 2009
    - API: don't try to unlock lockfile if we failed to lock it
    - API: more detailed message if failed to lock

    api/
        boinc_api.cpp
    html/project.sample/
        project_news.inc
    lib/
        filesys.cpp,h

David  23 Mar 2009
    - new screensaver: don't show jobs if suspended

    clientscr/
        ss_app.cpp

David  23 Mar 2009
    - API: more lockfile messages

    lib/
        filesys.cpp
    api/
        boinc_api.cpp

David  23 Mar 2009
    - client (linux): if don't find libcudart.so in the current dir,
        look for it in the library search path.  Fixes #863

    lib/
        coproc.cpp

Rom    24 Mar 2009
    - client: handle power events on Windows via a seperate thread and
        hidden window.  The basic code was already in place to handle
        logoff events on Win9x but now it is enabled for all Windows
        versions.
        
    client/
        app_control.cpp
        main.cpp, .h

David  24 Mar 2009
    - small code shuffle
    - fix manager build on unix

    clientgui/
        Makefile.am
        ViewWork.cpp
    lib/
        util.cpp
    samples/wrapper/
        wrapper.cpp
    api/
        boinc_api.cpp

David  24 Mar 2009
    - remove wait arg of resume_client()

    client/
        main.cpp,h

David  24 Mar 2009
    - upgrade and make_project scripts: run update_translations.php,
        which compiles the translation files into the form
        used by the web code.
        Projects that don't use "upgrade" will need to do this manually
        whenever translation files change.
    - make_project: create an initial db_revision file.
        Otherwise make_project followed by upgrade will try
        to do DB upgrades, which will error out

    html/
        inc/
            translation.inc
        ops/
            update_translations.php
        user/
            language_select.php
    tools/
        upgrade
        make_project

David  24 Mar 2009
    - web: updated the master translation file

    html/
        ops/
            build_po.php
        languages/translations/
            en.po
        user/
            home.php

David  24 Mar 2009
    - web: remove spurious translation files

David  24 Mar 2009
    - web: clean out translation directories before updating
        (to get rid of bad translation files)

    html/ops/
        update_translations.php
    py/Boinc/
        setup_project.py

David  24 Mar 2009
    - web: translation system didn't compile BOINC and
        project-specific translations correctly.

    html/
        ops/
            update_translations.php
        inc/
            translation.inc

David  25 Mar 2009
    - improve msgs in file upload handler

    sched/
        file_upload_handler.cpp

David  25 Mar 2009
    - client: give highest work-fetch priority to resources with idle instances

    client/
        work_fetch.cpp

Charlie 25 Mar 2009
    - MGR: Remove erroneous call of locale in main thread which may be causing 
        undesired chanegs in date and numeric formatting due to conflicts 
        between threads; also set locale only on a per-thread basis if available.
    - MGR: Rename method CMainDocument::CopyProjectsToStateFile() to 
        CMainDocument::CopyProjectsToStateBuffer() for clarity.
    
    clientgui/
        AsyncRPC.cpp
        BOINCGUIApp.cpp
        MainDocument.h
    lib/
        gui_rpc_client.h

Charlie 26 Mar 2009
    - Mac: revise XCode project to use OS 10.4 SDK for building PowerPC
        libraries and executables so that we can use weak-linking for
        APIs not available before OS 10.4, such as uselocale().
    - MGR: Modify SET_LOCALE constructor and destructor to change locale
        only on those systems without support for setting locale
        on a per-thread basis, such as OS 10.3.9.
    NOTE: At this point it appears that Ubuntu and Fedora both support
        uselocale().  If any platform does not support it, see the 
        comments at NO_PER_THREAD_LOCALE in lib/gui_rpc_client.h for info 
        on allowing for that.

    clientgui/
        AsyncRPC.cpp
    lib/
        gui_rpc_client.h
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  26 Mar 2009
    - client: clear resource backoffs on user-requested RPC
    - client: randomize resource backoffs to avoid lockstep

    client/
        cs_scheduler.cpp
        work_fetch.cpp

David  26 Mar 2009
    - client: when a job finishes,
        clear the project's backoff for its resource type.
        This fixes a problem where a project has a "max jobs in progress"
        limit, and we're backed off because of that.
        We'll now fetch work immediately instead of waiting 24 hrs.

    client/
        app.cpp

Charlie 26 Mar 2009
    - Mac: Additional changes to make sure BOINC libraries will continue to 
        build on the Mac using either XCode on OS 10.5 or config / make on 
        OS 10.3 and later, though the config / make method is still not 
        recommended on the Mac.
    - MGR & lib: Provide a cleaner way to specify that a platform does not 
        support uselocale() API or other per-thread locale.  See the comments 
        at NO_PER_THREAD_LOCALE in lib/gui_rpc_client.h for details.
    - Samples: Fix build breaks and warnings when using MakeMacExample.sh 
        script or Makefile_mac2 make file to build example_app on Mac.  These 
        errors were probably introduced when boinc_samples was moved into 
        boinc/samples. 
        
     clientgui/
        AsyncRPC.cpp
    lib/
        gui_rpc_client.h
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
    samples/
        example_app/
            Makefile_mac
            Makefile_mac2
            MakeMacExample.sh

David  27 Mar 2009
    - manager: display versions as x.xx

    clientgui/
        DlgItemProperties.cpp

David  27 Mar 2009
    - API: add function boinc_msg_prefix() that returns
        time of day and process ID.
        This should prefix all messages written to stderr
        by applications or by the runtime system.

    api/
        boinc_api.cpp,h
        graphics2_win.cpp
        graphics2_unix.cpp
    samples/
        wrapper/
            wrapper.cpp
        multi_thread/
            multi_thread.cpp
        example_app/
            uc2.cpp

David  27 Mar 2009
    - manager: fix message

    clientgui/
        ProjectInfoPage.cpp

David  27 Mar 2009
    - client: typo in work fetch code; may cause minor errors

    client/
        work_fetch.cpp

David  30 Mar 2009
    - boinc_submit (single-job submission):
        set the job params to reasonable values (see below),
        and make it easy to change these values in the script
    - create_work (function and script): change default job params:
        FLOPs est: 1e9 => 3600e9
        FLOPs bound: 1e10 => 86400e9
        mem bound 100MB => 500MB,
        disk bound 100MB => 1GB
        delay bound: 100000s => 1 week

    client/
        work_fetch.cpp
    tools/
        boinc_submit
        create_work.cpp

David  30 Mar 2009
    - GUI RPC: client side: if parse a RESULT and CPU is nonzero
        but elapsed time is zero, we must be talking to an old client;
        set elapsed = CPU

    lib/
        gui_rpc_client_ops.cpp

David  31 Mar 2009
    - client: (unix): if host name lookup fails, call res_init().
        This is an attempt to fix a problem on Linux where,
        if the client starts before a VPN is set up, it can never communicate

    client/
        http_curl.cpp
    lib/
        network.cpp,h

Charlie 31 Mar 2009
    - Mac: Add -lresolv to XCode linker flags for client and manager to link 
        with libresolv.dylib for new res_init() call.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 1 Apr 2009
    - Mac: Add -lresolv to XCode linker flags for screensaver, ss_app and 
        boinccmd.
    - MGR: on Mac, implement standard Preferences item under BOINC menu 
        with standard keyboard shortcut; same as Advanced/Preferences.

    clientgui/
        AdvancedFrame.cpp
        mac/
            MacSysMenu.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  1 Apr 2009
    - client: show project name in "backoff ended" msg

    client/
        app.cpp
        cpu_sched.cpp
        cs_scheduler.cpp

Charlie 1 Apr 2009
    SS: Under Mac Sandbox security, launch default screensaver graphics app 
        as user and group boinc_master via gfx_switcher, not via setgid.

    client/
        check_security.cpp
    clientgui/
        mac/
            SetupSecurity.cpp
    clientscr/
        gfx_switcher.cpp
        screensaver.cpp
    mac_build/
        Mac_SA_Secure.sh

Charlie 2 Apr 2009
    SS: Under Mac Sandbox security, terminate default screensaver graphics 
        app via gfx_switcher.  This is safer because the man page for kill() 
        says the user ID of the process sending the signal must match that 
        of the target process, though in practice that seems not to be true 
        on the Mac.

    clientscr/
        gfx_switcher.cpp
        mac_saver_module.cpp
        Mac_Saver_Module.h
        screensaver.cpp
        screensaver_win.h
    mac_build/
        Mac_SA_Secure.sh

David  2 Apr 2009
    - web: in filtered job lists,
        "pending" should include "inconclusive",
        and "invalid" should include "too late to validate"

    html/inc/
        result.inc

Rom    2 Apr 2009
    - WINSCR: It appears newer notebook models with multiple video
        chipsets exhibit an interesting situation.  It appears as though
        in certain conditions a single monitor machine actually reports
        itself as having three monitors.  Normally the monitor that
        contains the primary window (coord 0,0) is on monitor 0, but on
        these machines coord 0,0 is actually on monitor 2.  This led to the
        screensaver not properly exiting when keyboard and/or mouse activity
        was detected.  Now when we detect that keyboard and/or mouse activity
        has happened we send the WM_INTERRUPTSAVER event to all windows
        on all monitors.
        
    clientscr/
        screensaver_win.cpp, .h

David  3 Apr 2009
    - get_project_config.php: include plan classes in platform list;
        i.e., list both win/x86 and win/x86 + NVIDIA.
        This will allow the manager to show which projects can
        use the hosts's coprocessors,
        and also graying out projects that require an absent coproc.
    - fix compile warnings

    api/
        graphics2.h
        graphics2_util.cpp
    client/
        boinc_cmd.cpp
        work_fetch.cpp,h
    html/user/
        get_project_config.php

David  6 Apr 2009
    - make_project: get rid of verbosity-level stuff
        and fancy overwriting of stdout lines

    tools/
        make_project
    html/inc/
        translation.inc
    py/Boinc/
        setup_project.py

Rom    6 Apr 2009
    - WINSETUP: When uninstalling, don't migrate the client data back
        to the 5.x location.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        CAMigrateBOINCData.cpp

Rom    7 Apr 2009
    - WINSETUP: On some setups, how we were including the 'Everyone' well
        known security ID in the boinc_users group didn't work properly.
        
        From now on include the 'Everyone' security ID in the various
        ACLs instead.  This will probley clean up a wide range of
        various issues with multi-user installs.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CACreateBOINCGroups.cpp
        CASetPermissionBOINC.cpp
        CASetPermissionBOINCData.cpp
        CASetPermissionBOINCDataProjects.cpp
        CASetPermissionBOINCDataSlots.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  7 Apr 2009
    - web and client: change the default for "run_gpu_if_user_active"
        from true to false.
        Currently running CUDA apps on NVIDIA GPUs causes
        a significant slowdown in GUI response.
        
    html/inc/
        prefs.inc
    lib/
        prefs.cpp
    tools/
        make_project

David  7 Apr 2009
    - client: we were setting config defaults after parsing cmdline.
        This meant that the cmdline args that set config params weren't working:
            --allow_multiple_clients
            --report_results_immediately
            --no_priority_change
            --start_delay

    client/
        client_state.cpp
        cs_cmdline.cpp
        log_flags.cpp,h

Eric   7 Apr 2009
    - API:  Added new function boinc_set_credit_claim() for use by projects that
      want to grant approximately fixed credits, but don't want to express them in 
      terms of FPOPS and IOPS.  This API just calls 
      boinc_ops_cumulative(N*8.64000e+11,0).

    api/
        boinc_api.cpp,h

Charlie 7 Apr 2009
    MGR: Fix compatibility problem with sizing of all-projects list in Attach 
        Project Wizard when using wxWidgets 2.8.8 or later.

    clientgui/
        ProjectListCtrl.cpp

David  8 Apr 2009
    - Add "html/ops/purge_profile.php" script to help admins locate
        and remove spam profiles

    html/
        inc/
            email.inc
        ops/
            purge_profile.php
        user/
            mail_passwd.php

David  8 Apr 2009
    - client: back out res_init() change; it didn't work

    client/
        http_curl.cpp
    lib/
        network.cpp.h

Charlie 8 Apr 2009
    - Mac MGR: build with wxWidgets 2.8.10.
    - Mac: Remove -lresolv from XCode linker flags for client, manager, 
        ss_app, screensaver and boinccmd since res_init() call is removed.

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 9 Apr 2009
    - Mac client: fill in command field of PROCINFO struct so <exclusive_app> 
        log flag works properly on Mac.

    lib/
        procinfo_mac.cpp

David  9 Apr 2009
    - client: for each app version,
        keep track of the largest WSS of tasks using it.
        In checking whether tasks fit in RAM,
        use this as an estimate for tasks that haven't started yet.
        This avoids a situation where the client starts a lot of
        tasks in sequence, only to find that each one doesn't fit in RAM.

    client/
        client_types.h
        cpu_sched.cpp

David  9 Apr 2009
    - manager: show execution directory in task properties

    clientgui/
        DlgItemProperties.cpp

Rom    9 Apr 2009
    - WINSETUP 'Everyone' is not just a group, it is a well known
        group.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        CASetPermissionBOINC.cpp
        CASetPermissionBOINCData.cpp
        CASetPermissionBOINCDataProjects.cpp
        CASetPermissionBOINCDataSlots.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  9 Apr 2009
    - graphics API: add rotation arg to txf_render_string()
        (from Carl C.)

    api/
        txf_util.cpp,h

Rom    10 Apr 2009
    - WINSETUP: Be sure to define INSTALLDIR if it isn't already
        defined by the system or the transform.  DATADIR was
        already being handled.
    - WINSETUP: Save setup state at the end of the execution phase
        as well as the end of the UI phase.
        
    win_build/installerv2/
        BOINC.ism
        BOINCx64.ism
    win_build/installerv2/redist/Windows/src/boinccas/
        CAValidateSetupType.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  10 Apr 2009
    - client: for coproc jobs, don't start a job while a quit is pending.
        Otherwise the new job may fail on memory allocation.

    client/
        cpu_sched.cpp

David  10 Apr 2009
    - client: instead of scheduling coproc jobs EDF:
        - first schedule jobs projected to miss deadline in EDF order
        - then schedule remaining jobs in FIFO order
        This is intended to reduce the number of preemptions of coproc jobs,
        and hence (since they are always preempted by quit)
        to reduce the wasted time due to checkpoint gaps.
    - client: the CPU scheduling policy made use of the number
        of deadline misses in various places.
        This should include only the deadline misses of CPU jobs.
        So move "deadlines_missed" from RR_SIM_STATUS and PROJECT
        to RSC_PROJECT_WORK_FETCH so that we have separate counts
        for CPU and coproc jobs, and use the count for CPU jobs.
    - GUI RPC: removed the rr_sim_deadlines_missed field
        from project descriptor.
        This is no longer meaningful, and it didn't seem to be used anywhere.

    client/
        client_types.cpp,h
        cpu_sched.cpp
        rr_sim.cpp,h
        work_fetch.cpp,h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  10 Apr 2009
    - GUI RPC and manager: send slot and show it in task properties
        rather than slot path
        (slot_path is defined only for apps with graphics app).

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

Rytis  11 Apr 2009
    - web: allow login from subdirectories of the site (expects login_form.php
        to be located in the URL_BASE).
    
    html/inc/
        util.inc

David  12 Apr 2009
    - client: put back the call to res_init() on lookup failure.
        Apparently it worked after all.

    client/
        http_curl.cpp
    lib/
        network.cpp,h

Charlie 13 Apr 2009
    - Mac: Add -lresolv to XCode linker flags for client, manager, boinccmd, 
        screensaver and ss_app to link with libresolv.dylib for res_init() 
        call (again).

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  14 Apr 2009
    - client: eliminate the need to write the state file on each checkpoint.
        Instead, write the info into a file in the slot directory,
        and check for these files on startup.
        This should reduce the overhead of state-file writing
        on machines with lots of cores.
        There will still be a flurry of writes each time a job finishes,
        but reducing that overhead would be a larger job.
    - client: make sure we write the state file after a failed RPC

    client/
        app.cpp,h
        app_control.cpp
        cs_scheduler.cpp
        file_names.h
        scheduler_op.cpp

Charlie 15 Apr 2009
    SS: Under Mac Sandbox security, launch default screensaver graphics app 
        via gfx_switcher as user and group boinc_project rather than 
        boinc_master, since none of the default screensaver's RPC calls 
        requires access to the password in gui_rpc_auth.cfg.

    clientscr/
        gfx_switcher.cpp
        screensaver.cpp

Rom    15 Apr 2009
    - Fix compiler errors
      ( From: Sascha Manns )
      
    client/
        hostinfo_unix.cpp
    clientgui/
        DlgAdvPreferences.cpp

David  15 Apr 2009
    - web: improve the appearance of buttons
    - web: divide the stylesheet into "main.css"
        (which has formatting stuff, rounded corners etc.)
        and "white.css" (which has colors).
        The above two from Simek.
    - scheduler: change default min NVIDIA driver version
        from 17500 to 17700

    html/
        inc/
            util.inc
        user/
            main.css (new)
            sample_index.php
            user_search.php
            white.css
            img/
                white_grad.png (new)
    sched/
        sched_plan.cpp

David  15 Apr 2009
    - Unix build: make it work if "diff" is missing (??)
        from Michael Tughan

    lib/
        Makefile.am

David  15 Apr 2009
    - web: increase button text size a little

    html/user/
        main.css

David  15 Apr 2009
    - web: update black.css

    html/user/
        black.css

Rom    15 Apr 2009
    - Add ICU to the BOINC depends list.  It is needed for
        SQLLite3 which will be needed for reading Firefox
        3.x cookies.
        
    icu/
        <Various Files>

Charlie 15 Apr 2009
    Mac MGR: Add keyboard shortcuts command-shift-S to switch to Simple View
        and command-shift-A to switch back to Advanced View.
        
    clientgui/
        AdvancedFrame.cpp, .h
        sg_BoincSimpleGUI.cpp, .h

David  15 Apr 2009
    - client: fixed a crash caused by using %f to write
        working-set size into a fixed-size buffer.
        Use %e instead.
        TODO: figure out why WSS was huge.
    - web: if "en" is primary language, don't read translation files

    client/
        app_control.cpp
    html/inc/
        translation.inc
    samples/example_app/
        uc2.cpp

David  16 Apr 2009
    - client: another try at fixing the above crash
    - web: don't show plan class in separate column in apps list; fixes #874

    client/
        app_control.cpp
    html/user/
        apps.php

David  16 Apr 2009
    - upgrade script: do DB update even if stop_web is present,
        rather than spewing an HTML error message.
        Fixes #875

    html/
        inc/
            boinc_db.inc
            util.inc
        ops/
            db_update.php
        user/
            apps.php

David  16 Apr 2009
    - client: if detach a project, adjust debts and trigger
        CPU sched and work fetch

    client/
        client_state.cpp
        cpu_sched.cpp

Charlie 17 Apr 2009
    Mac MGR: Changes to build with full Unicode support with wxWidgets-2.8.10.

    mac_build/
        buildWxMac.sh
        setupForBOINC.sh
    clientgui/
        BOINCClientManager.cpp
        SkinManager.cpp
        mac/
            MacGUI.pch

Charlie 18 Apr 2009
    MGR: Put keyboard shortcuts CTRL+SHIFT+S and CTRL+SHIFT+A in View Menu so 
        their functionality is not hidden.  (On the Mac, this translates to 
        COMMAND-SHIFT-A and COMMAND-SHIFT-S.)
        
    clientgui/
        AdvancedFrame.cpp, .h

David  19 Apr 2009
    - client: improve CPU sched debug messages
        (say what kind of job and why we're scheduling it)
    - client: log messages describing GPUs: one line per GPU; fixes #879

    client/
        cpu_sched.cpp
    lib/
        coproc.cpp,h

David  20 Apr 2009
    - web: swap positions of reply/delete buttons in private message display

    html/user/
        pm.php

David  20 Apr 2009
    - db_purge: improve error-checking; if we're failing to write archives,
        quit immediately so that we don't delete unarchived DB records

    sched/
        db_purge.cpp

David  20 Apr 2009
    - partial checkin so I can edit locally (bad network connection)

    lib/
        coproc.cpp,h

Rom    21 Apr 2009
    - WINBUILD: Update Project files for new layout.
    
    win_build/
        boinc_cli_curl.vcproj
        boinc_dll.vcproj
        boinc_setup.vdproj (Deleted)
        boinc_setup_auto.vdproj (Deleted)
        boinc_ss.vcproj
        boinccmd.vcproj
        boincmgr_curl.vcproj
        boincsvcctrl.vcproj
        boinctray.vcproj
        gr_boinc_cli_curl.vcproj (Deleted)
        gr_boinc_dll.vcproj (Deleted)
        gr_boinc_ss.vcproj (Deleted)
        gr_boinccmd.vcproj (Deleted)
        gr_boincmgr_curl.vcproj (Deleted)
        GridRepublic.sln (Deleted)
        libboinc.vcproj
        libboinc_staticcrt.vcproj
        sim.vcproj
        ss_app.vcproj
        updater.vcproj

David  21 Apr 2009
    - client: new approach to handling multiple GPUs.
        old: find fastest GPU, and pretend that others are the same.
            Problem: other GPUs might be less capable,
            and not able to handle jobs sent by server.
        new: find the most "capable" GPU, use others that are equivalent,
            don't use those that are not.
            "Capable" is defined by
            - compute capability (i.e., hardware version)
            - driver version
            - memory size
            - FLOPs
            in that priority order.
        See comments in lib/coproc.h

    client/
        app_start.cpp
    lib/
        coproc.cpp,h

David  21 Apr 2009
    - client: fix crash bug in CUDA init

    lib/
        coproc.cpp

Rom    22 Apr 2009
    - WINBUILD: More project file fixes
    - WINBUILD: Create a new configuration for building the Unicode
        version of the BOINC Manager.
        
    win_build
        boinc_cli_curl.vcproj
        boinc_dll.vcproj
        boinc_ss.vcproj
        boinccmd.vcproj
        boincmgr_curl.vcproj
        boincsvcctrl.vcproj
        boinctray.vcproj
        libboinc.vcproj
        libboinc_staticcrt.vcproj
        sim.vcproj
        ss_app.vcproj
        updater.vcproj

Rom    22 Apr 2009
    - WIN: First pass through the code to fix compliation errors when
        building in a Unicode enabled environment.
        
        NOTE: For files that are shared between the core client and
          the manager, it was simpliar to just call the ANSI versions
          of the specific Windows API functions then to monkey with
          all of the string handling code and convert between ANSI
          and UCS-2 strings.  CreateFile becomes CreateFileA instead
          of the default of CreateFileW.
          
        Down to 11 compile time errors from over 100.

    clientgui/
        BOINCBaseFrame.cpp
        BOINCTaskBar.cpp
        browser.cpp
        browser.h
        sg_StatImageLoader.cpp
    lib/
        boinc_win.h
        diagnostics_win.cpp
        filesys.cpp
        gui_rpc_client_ops.cpp
        proc_control.cpp
        stackwalker_imports.h
        stackwalker_win.cpp
        str_util.cpp
        util.cpp
        win_util.cpp, .h

David  22 Apr 2009
    - client: When a preemptable task wasn't preempted
        (e.g. because it hadn't finished its time slice)
        we were failing to mark it as scheduled.

    client/
        cpu_sched.cpp

Rom    23 Apr 2009
    - WINBUILD: More project file cleanup.
    - WINBUILD: Move wxWidgets include directives from the
        FlatNotebook to the pre-compiled header. Try and avoid
        a compilation problems when two different sets of
        wxWidgets build environments are on the system and have
        been setup differently.
        
    clientgui/common/
        wxFNBDropTarget.h
    clientgui/
        stdwx.h
    win_build/
        boincmgr_curl.vcproj

David  24 Apr 2009
    - client: message tweak
    - ops: don't import teams if using invitation codes

    client/
        work_fetch.cpp
    html/ops/
        team_import.php

David  24 Apr 2009
    - client: tweak to 4/21 checkin.
        After finding the "most capable" GPU,
        ignore FLOPS in deciding what GPUs are equivalent to it.
        This opens up the possibility that the client will get jobs
        that it won't be able to finish in time.
        But it still avoids getting jobs that will crash.

    lib/
        coproc.cpp

David  24 Apr 2009
    - fix typo in compare_cuda()

    lib/
        coproc.cpp

David  26 Apr 2009
    - team import: error out if account creation disabled

    html/ops/
        team_import.php

David  27 Apr 2009
    - link fix
    html/inc/
        stats_sites.inc

David  27 Apr 2009
    - client: show message when user does a project or task op
        (suspend, resume, update, etc.)

    client/
        gui_rpc_server_ops.cpp

David  27 Apr 2009
    - client: add <use_all_gpus> config option.  If set, use GPUs
        even if they're not equivalent to the most capable one.
    - Validator: fix one_pass_N_WU option.

    client/
        client_state.cpp
        log_flags.cpp,h
    lib/
        coproc.cpp,h
    sched/
        validator.cpp

David  28 Apr 2009
    - DB code: fixed three places where we accessed a MYSQL_ROW
        after freeing the MYSQL_RES it came from.
        (this didn't appear to cause any problems, but not good form).
        Fixes #883

    db/
        db_base.cpp

David  30 Apr 2009
    - Changes to get the client to build on IRIX:
        don't use the variable name "sgi";
        include <xxx.h> instead of <cxxx>; the latter just adds
        overloaded functions that we avoid.

    api/
        gutil.cpp
        gutil_text.cpp
    client/
        boinc_cmd.cpp
        hostinfo_unix.cpp
        whetstone.cpp
    html/inc/
        stats_sites.inc
    lib/
        diagnostics.h
        gui_rpc_client_ops.cpp
        str_util.cpp

Rom    30 Apr 2009
    - MGR: Turn GetViewName into the unlocalized version of the view
        name, so the configuration group name is consistant across
        all languages and does not cause conversion issues on
        different platforms where the configuration information
        is treated differently when compiled Unicode vs. ANSI.
        
    clientgui/
        ViewMessages.cpp
        ViewNews.cpp
        ViewProjects.cpp
        ViewResources.cpp
        ViewStatistics.cpp
        ViewTransfers.cpp
        ViewWork.cpp

David  1 May 2009
    - removed outdated translation files; updated template

David  1 May 2009
    - sample bitwise validator: make it work for binary files
        fixes #886, #887

    lib/
        md5_file.h
        util.cpp,h
    sched/
        sample_bitwise_validator.cpp

Rytis  3 May 2009
    - user web: add a hook project_user_links() to user_links() to easily
        extend user links (very useful for adding project badges).
    
    html/inc/
        util.inc

David  4 May 2009
    - client: view 2 GPUs as equivalent if their memory differs by <30%.
        (maybe their memory differed slightly from the most capable one)

    lib/
        coproc.cpp

David  4 May 2009
    - client: simplify enforce_schedule(), and maybe fix bugs.
        New approach: take the "ordered_schedule_results" list,
        add running jobs that haven't finished their time slice,
        and order the result appropriately.
        Then run jobs in order until CPUs are filled.
        Simpler and clearer than the old way.

    client/
        client_types.h
        client_state.h
        cpu_sched.cpp

David  5 May 2009
    - client: enforce_schedule() wasn't starting GPU jobs

    client/
        cpu_sched.cpp

David  5 May 2009
    - Change Makefiles to use "$(LN) foo ." instead of "ln foo"

    zip/
        Makefile.am
    api/
        Makefile.am

Rom    5 May 2009
    - It appears Pootle is looking for a comment line ahead of
        each message to translate, if it doesn't have some form
        of comment it skips over it.
        
    doc/
        build_po.php

Charlie 5 May 2009
    Mac: Modify wxWidgets build script to fix a problem in wxMac-2.8.10 
        which made the Manager extremely slow to update or respond to 
        user input, by patching wxMac-2.8.10/src/mac/carbon/thread.cpp.
        wxMac developer Stefan Csomor has checked my change into the 
        wxWidgets 2.8 branch, so this should be fixed in wxMac-2.8.11.

    mac_build/
        buildWxMac.sh

Charlie 5 May 2009
    MGR: Add comments and slightly reorder code for clarity.

    clientgui/
        AsyncRPC.cpp

David  6 May 2009
    - client: write message (and show new config info) when config file reread
    - client: improve cpu_sched_debug messages
    - web translation: code wasn't handling multi-line tokens

    client/
        gui_rpc_server_ops.cpp
        cpu_sched.cpp

David  6 May 2009
    - feeder: add -appids option: lets you specify which apps to
        get jobs for (default it all).
        Useful if you're mixing locality and regular scheduling.
    - a little E@h-specific stuff
    From Bernd Machenschalk.

    sched/
        feeder.cpp
        handle_request.cpp
        sched_send.cpp

David  7 May 2009
    - client, Mac: don't do res_init().  It causes a crash.
    - client (Unix): if client crashes while benchmark processes are going,
        make sure they detect this and exit.
    - back-end programs: remove hardwired assumptions about
        what directory they run in, and hence where config.xml is.
        E.g., daemons look for it in "..", others expect it in current dir.
        New approach: all the programs look for the project dir as follows:
        1) the environment var BOINC_PROJECT_DIR, if defined
        2) the current dir, if config.xml is there.
        3) else ".."
        This means you can run programs in either proj/bin/ or proj/,
        or (using BOINC_PROJECT_DIR) you can keep executables
        outside of the project dir.

    client/
        cpu_sched.cpp
        cs_benchmark.cpp
    lib/
        network.cpp
    sched/
        *.cpp
    tools/
        backend_lib.cpp
        create_work.cpp
        dir_hier_path.cpp

Bernd 7 May 2009
    - <cstdio> is a C++ haeder - moved it to __cplusplus section
    lib/
        filesys.h

Rytis  7 May 2009
    - user web: remove an undocumented feature where anyone could do a
        recompile of language files by just knowing an URL parameter.
    
    hmtl/inc/
        translation.inc

Charlie 7 May 2009
    - Mac: Remove -lresolv from XCode linker flags for client, manager, boinccmd 
        and screensaver which linked with libresolv.dylib for res_init() call.
    - Mac client: fix parent died test in benchmark_time_to_stop().

    client/
        cs_benchmark.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Rom    8 May 2009
    - WINBUILD: Cleanup the Unicode configurations
    - WINBUILD: Make building Unicode version of BOINC Manager the
        default.
        
    win_build
        boinc_cli.vcproj
        boinc_dll.vcproj
        boinc_ss.vcproj
        boinccmd.vcproj
        boincmgr.vcproj
        boincsvcctrl.vcproj
        boinctray.vcproj
        libboinc.vcproj
        libboinc_staticcrt.vcproj
        sim.vcproj
        ss_app.vcproj
        updater.vcproj
        

David  9 May 2009
    - update translation file

    locale/templates/
        BOINC-Project-Generic.pot

Rom    12 May 2009
    - MGR: Include support for Firefox 3.x cookie support for
        the attach to project wizard.
    - MGR: Include support for a cookie based attach to
        account manager wizard.
        
    clientgui/
        browser.cpp, .h
    clientgui/mac/
        browser_safari.mm
    win_build/
        boinc_post_bld_rules.cmd
        boincmgr.vcproj

Rom    12 May 2009
    - WINBUILD: Have the new installers include the new BOINC OpenGL
        based screensaver, as well as the logo and font files.
    - WINBUILD: Include sqlite3.dll in the BOINC Manager component.
    
    win_build/installerv2/
        BOINC.ism
        BOINCx64.ism
    win_build/
        ss_app.vcproj

David  12 May 2009
    - file deleter: improved log messages (from Bernd M)

    sched/
        file_deleter.cpp

David  12 May 2009
    - scheduler: the multiplier for both #jobs/day and #jobs in progress
        is #CPUs + config.cuda_multiplier * #GPUs

    sched/
        sched_send.cpp

Charlie 13 May 2009
    - Mac MGR: Fix compile error.
    - Mac MGR: Add -lsqlite3 to XCode linker flags for manager.

    clientgui/
        mac/
            browser_safari.mm
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 13 May 2009
    - MGR: Merge "Attach to account manager" functionality into "Attach to 
        project" wizard.  I have not yet merged the Synchronize with account 
        Manager" or "Remove from account manager" into the "Attach to project" 
        wizard; after doing that I will remove the obsolete classes and files.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        BOINCBaseWizard.cpp, .h
        BOINCWizards.h
        WelcomePage.cpp, .h
        WizardAttachProject.cpp, .h
    lib/
        gui_rpc_client_ops.cpp

David  13 May 2009
    - web: make build_po.php usable for projects

    html/ops/
        build_po.php

Charlie 13 May 2009
    - MGR: Always treat quit RPCs as non-demand so Manager can exit when 
        client is not responding; don't remove currently active RPC request 
        from queue when receiving a quit RPC request.
    
    clientgui/
        AsyncRPC.cpp

David  14 May 2009
    - scheduler: add <report_max> config parameter;
        limits the # of completed results handled per scheduler RPC.
        This may be needed to avoid crashes due to memory allocation
        failure (each reported result uses about 128KB memory).
    - web: In showing result lists,
        include "Validate error" results in the "Invalid" category.
        (Previously they didn't appear in any category)

    html/inc/
        result.inc
    sched/
        sched_config.cpp,h
        sched_result.cpp

David  14 May 2009
    - web: check for mismatched "'s in translation files
    - build_po.php: add LANG_NAME strings

    html/
        inc/
            translation.inc
        ops/
            build_po.php

Charlie 15 May 2009
    Fix compiler warning.

    lib/
        util.cpp

Charlie 15 May 2009
    - MGR: Finish merging "Attach to account manager" functionality into "Attach 
        to project" wizard: "Synchronize with account Manager" and "Remove from 
        account manager." Remove the obsolete classes and files.
        NOTE: The "Remove from account manager" functionality in the wizard 
        (action == ACCOUNTMANAGER_DETACH) was no longer used, so I removed this 
        block of code.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        AdvancedFrame.cpp, .h
        BOINCBaseWizard.cpp, .h
        BOINCWizards.h
        CompletionPage.cpp
        Events.h
        Makefile.am
        sg_BoincSimpleGUI.cpp
        sg_ProjectsComponent.cpp
        WelcomePage.cpp
        WizardAccountManager.h
        WizardAttachProject.cpp, .h
        WizardAccountManager.cpp, .h (Deleted)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
    win_build/
        boincmgr.vcproj

Charlie 15 May 2009
    - MGR: Update m_dtCachedCCStatusTimestamp only when RPC completes.
    - MGR: CBOINCClientManager::IsBOINCCoreRunning() tests whether the Client 
        process exists, rather than doing an RPC.  We can't use an async RPC 
        here because we may not yet be connected to the Client, and the direct
        RPC which was being done would hang the Manager if the Client was 
        running but not responding.  This should fix some of the situations 
        where the manager would become unresponsive.
    - MGR: Add an "Exit BOINC" button ("Quit BOINC" on Mac) to async RPC 
        "Communicating with BOINC Client. Please wait..." dialog.  This allows 
        users to exit BOINC more easily when Client is unresponsive.
    
    clientgui/
        AsyncRPC.cpp, .h
        BOINCClientManager.cpp
        MainDocument.cpp

David  15 May 2009
    - scheduler: enforce max_wus_to_send config parameter
        for jobs being resent (as well as new jobs)

    sched/
        sched_resend.cpp

Charlie 16 May 2009
    - MGR: Fix bug which prevented skin change from being saved if exiting Manager 
        while in Simple View.

    clientgui/
        BOINCGUIApp.cpp

David  17 May 2009
    - web: fix formatting in [pre].  Fixes #891

    html/inc
        text_transform.inc

David  17 May 2009
    - upgrade: don't crash if file copy fails
    - db_update.php: select database (not clear if this ever worked)
    - translation: fix bug if have both BOINC and project translation

    html/
        inc/
            boinc_db.inc
            translation.inc
        ops/
            update_translations.php
            db_update.php
    py/Boinc
        setup_project.py

David  17 May 2009
    - web: use read-only replica when possible

    html/user/
        pending.php
        results.php
        show_host_detail.php
        workunit.php

Rom    18 May 2009
    - MGR: Take care of numerious compiler warning for Linux builds
        and update license information on a bunch of files.
        
    clientgui/res/
        <Numberious Files>
    win_build/
        boincmgr.vcproj

Charlie 20 May 2009
    - Mac: Fix build scripts for new screensaver.
    
    mac_installer/
        release_GridRepublic.sh
        release_boinc.sh

David  20 May 2009
    - web: in RSS feeds, replace images with [Image link]
        but allow other tags (like <a>).
        Note: if the image is itself inside a <a href=x>,
        then the [Image link] will be linked to x, not to the image.

    html/
        inc/
            text_transform.inc
        user/
            sample_rss_main.php

Rom    20 May 2009
    - MGR: Fix bug where *nix platforms using UCS2 Unicode encoding
        were not able to display graphics as one or more null bytes
        seperate each character.
        
    clientgui/
        MainDocument.cpp

Rom    20 May 2009
    - MGR: Fix bug where there was no trailing backslash before
        'symbols' was appended to the end of the symbol path.  This
        caused the stack tracing code not to download the actual
        symbol files needed to debug a problem.  I have no idea
        when this bug was introduced.
        
    lib/
        stackwalker_win.cpp

David  20 May 2009
    - web: the logic for using read-only DB replicas was messed up

    html/inc/
        boinc_db.inc

Rom    22 May 2009
    - MGR/client: Enable cookie support for Account Managers

    client/
        gui_rpc_server_ops.cpp
    clientgui/
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        browser.cpp
        MainDocument.cpp
        WizardAttachProject.cpp

Rom    20 May 2009
    - Tag for 6.7.5 release, all platforms
      boinc_core_release_6_7_5

    /
        configure.ac
        version.h
    
David  22 May 2009
    - web: escape forum RSS entries instead of stripping tags
        (from Nicolas; fixes #899)

    html/user/
        forum_rss.php

David  22 May 2009
    - web: clarify build_po.php

    html/ops/
        build_po.php
        build_po_boinc.php (new)

David  22 May 2009
    - web: fix host-merge logic.  Fixes #893

    html/inc
        host.inc

David  22 May 2009
    - fix display problem when talking to old clients

    lib/
        gui_rpc_client_ops.cpp

David  25 May 2009
    - web: fix regular expression for "images as links"

    html/inc/
        text_transform.inc

David  26 May 2009
    - DB: for tables w/ fulltext indices, specify engine as MyISAM
        from Nicolas; fixes #904

    db/
        schema.sql

David  26 May 2009
    - Mac installer: fix off-by-1 error

    mac_installer/
        CustomInstall.cpp

David  27 May 2009
    - lib: compile fix for C

    lib/
        filesys.h

David  27 May 2009
    - compile fixes for Haiku

    lib/
        network.h
        gui_rpc_client.h
        diagnostics.cpp
        shmem.cpp,h
    zip/unzip/unix/
        unix.c

David  27 May 2009
    - compile fixes for Haiku

    lib/
        shmem.cpp

David  28 May 2009
    - scheduler: return better message if client has
        too little GPU RAM, wrong driver version, etc.
        (tell them what the specific requirement is)

    sched/
        sched_plan.cpp,h
        sched_version.cpp

David  28 May 2009
    - client: fixed nasty bug that caused GPU jobs to crash on startup
        when they're preempting another GPU job.
        The problem was as follows:
        - job A is chosen to preempt job B
        - we tell job B to quit, and initialize job A but don't start it;
            however, we set if scheduler state to SCHEDULED
            (rather than UNINITIALIZED)
        - job B exits, and we start job A.
            Since its state is not UNITIALIZED, we don't set up its slot dir.
        - job A runs in an empty slot dir, doesn't find its files, and bombs out.
    - client: add <slot_debug> option (prints messages about
        allocation of slots, creating/removing files in slot dirs).

    client/
        app.cpp,h
        app_control.cpp
        app_start.cpp
        cpu_sched.cpp
        file_names.cpp
        sandbox.cpp,.h
        sim_util.cpp
    clientgui/
        ViewWork.cpp

Charlie 28 May 2009
    - Mac MGR: Eliminate erroneous references to wxMac-2.8.7 in XCode (now 
        building with wxMac-2.8.10).

    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 28 May 2009
    SS: Add new optional boolean xml tag <default_ss_first>; if true, then launch 
        default screensaver graphics app first, else run science graphics first.

    clientscr/
        screensaver.cpp, .h
        Mac_Saver_Module.h
        screensaver_win.h

Rom    29 May 2009
    - Change version number to 6.9.x

    /
        configure.ac
        version.h

David  29 May 2009
    - updated python assimilator

    sched/
        assimilator.py

David  31 May 2009
    - lib: return proper error codes from boinc_rename() and boinc_mkdir()
    - client: Haiku support (from Urias McCullough)
    - client: include plan class in other_result list in sched request
        (for resource-specific jobs-in-progress limit)

    client/
        cs_scheduler.cpp
        hostinfo_unix.cpp
    lib/
        filesys.cpp

David  1 June 2009
    - scheduler: add new config option <max_wus_in_progress_gpus>.
        The limit on jobs in progress is now
            max_wus_in_progress * NCPUS
            + max_wus_in_progress * NGPUS
        where NCPUS and NGPUS reflect prefs and are capped.
        Furthermore: if the client reports plan class for in-progress jobs
        (see checkin of 31 May 2009)
        then these limits are enforced separately;
        i.e. the # of in-progress CPU jobs is <= max_wus_in_progress*NCPUS,
        and the # of in-progress GPU jobs is <= max_wus_in_progress_gpu*NGPUS
    - scheduler config: rename <cuda_multiplier> to <gpu_multiplier>
    - scheduler: <max_wus_to_send> is now scaled by
        (NCPUS + gpu_multiplier*NGPUS)
    - scheduler: don't keep scanning array if !work_needed()
    - scheduler: moved array-scan logic from sched_send.cpp to sched_array.cpp
    - scheduler: don't say "no work available" if jobs are available
        but work_needed() is initially false

    sched/
        handle_request.cpp
        sched_array.cpp,h
        sched_config.cpp,h
        sched_plan.cpp,h
        sched_resend.cpp
        sched_score.cpp
        sched_send.cpp,h
        server_types.cpp,h

David  1 June 2009
    - feeder: process array slots even if enum has ended;
        this is needed to handle stale entries and slots
        reserved by now-dead PIDs
    - client: unify code for writing soft link files

    client/
        app_start.cpp
        client_types.cpp
        file_names.cpp,h
    sched/
        feeder.cpp
        main.cpp

Charlie 1 June 2009
    - Mac MGR: Fix per-thread-locale logic on Mac.
    - MGR: In Async RPC logic, change calling order for wxCondition and 
        wxMutex from <Set Boolean, Lock, Unlock, Signal> to <Lock, 
        Set Boolean, Signal, Unlock> to be consistent with examples in 
        literature, hoping this might fix an intermittent hang in 
        wxCondition::Wait().
    - Mac MGR: Mac OS 10.3.9 does not have sqlite3, so we must weak-link.
    
    clientgui/
        AsyncRPC.cpp
        browser.cpp

David  1 June 2009
    - python DB code: add clear cache method, and fix equality crash
        (from Jeremy Cowles)

    py/Boinc/
        boinc_db.py

David  1 June 2009
    - client: if scheduler request didn't request work, don't report 0 tasks
    - scheduler: fix crash if anonymous platform

    client/
        cs_scheduler.cpp
    sched/
        sched_send.cpp

David  1 June 2009
    - Updated Python assimilator (from Jeremy Cowles)

    sched/
        assimilator.py
        testasm.py

David  2 June 2009
    - client: show "est. delay" correctly in work fetch debug msgs
    - client: show times correctly in rr_sim debug msgs
    - client: in "requesting new tasks" msg,
        say what resources we're requesting (if there's more than CPU)
    - client: estimated delay was possibly being calculated incorrectly
        because of roundoff error

    client/
        cs_scheduler.cpp
        rr_sim.cpp
        scheduler_op.cpp
        work_fetch.cpp

David  2 June 2009
    - client: add a 1e-6 slop factor in deciding if
        a resource is fully utilized.

    client/
        work_fetch.cpp
    sched/
        file_upload_handler.cpp

Charlie 2 June 2009
    - MGR: cosmetic changes to combined attach wizard, partial fix 
        to "Forgot password" link for account managers.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerInfoPage.cpp
        ProjecttInfoPage.cpp
        ProjectListCtrl.cpp, .h
        WelcomePage.cpp

Charlie 3 June 2009
    - MGR: finish changes to combined attach wizard, change "Forgot 
        password" link for account managers to a link to AM's home 
        page, add static text that you must register at web site 
        before proceeding or go to web site for forgotten password.
        
    clientgui/
        AccountInfoPage.cpp, .h
        BOINCWizards.h

David  3 June 2009
    - client: include device number in message describing NVIDIA GPU,
        and call it "NVIDIA GPU" rather than "CUDA device"
        fixes #879

    lib/
        coproc.cpp

David  3 June 2009
    - web: align field name/value at top

    html/user/
        main.css

David  3 June 2009
    - make update_translations.php executable; fixes #770

    html/ops/
        update_translations.php
    tools/
        make_project
        upgrade 

David  3 June 2009
    - client: tweak messages

    client/
        client_types.cpp
        cs_scheduler.cpp
        cs_statefile.cpp

David  3 June 2009
    - fix python scripts; fixes #770 (from Nicolas)

    tools/
        make_project
        upgrade

David  3 June 2009
    - client: when parsing app_info.xml, make sure coprocessors are present.
        fixes #911

    client/
        cs_statefile.cpp

David  3 June 2009
    - web: make [pre] work similar to [code].  fixes #798
        Note: I had to move [pre] to the top of the
        preg list to make this work.  Not sure why.

    html/
        inc/
            text_transform.inc
        user/
            main.css

Charlie 3 June 2009
    - GR Installer: Update make_GridRepublic.sh script for new default 
        screensaver.
        
    mac_installer/
        make_GridRepublic.sh

Charlie 3 June 2009
    - client: Fix missing argument in printf statements.
    
    lib/
        coproc.cpp,h

David  3 June 2009
    - fix to the above

    lib/
        coproc.cpp,h

Rom    3 June 2009
    - MGR: Accept Unicode input for usernames and password in the
        manager now that the manager is Unicode enabled.  Input will
        show up as UTF-8 strings in the CC and project.
        
        Fixes #452
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerInfoPage.cpp
        ProjectInfoPage.cpp

Rom    4 June 2009
    - MGR: Fix bug in browser cookie detection code where firefox v3
        cookie detection was returning true even for cookies that don't
        exist.
        
    clientgui/
        browser.cpp, .h

Rom    4 June 2009
    - MGR: Add some basic validation for account manager cookie detection.
        
    clientgui/
        browser.cpp

David  4 June 2009
    - web: typo in filtered results (from R. Haselgrove)

    html/inc/
        result.inc

David  4 June 2009
    - web: improve appearance of results page

    html/user/
        results.php

David  4 June 2009
    - GUI RPC: add active_only option to get_results() RPC

    client/
        client_state.h
        cs_statefile.cpp
        gui_rpc_server_ops.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  4 June 2009
    - client: read app_info.xml's AFTER scanning GPUs.
        Otherwise we'll discard all GPU apps and results.

    client/
        client_state.cpp

David  4 June 2009
    - lib: fix compile warning

    lib/
        crypt.cpp

Charlie 4 June 2009
    - MGR: Fix compile errors.
    - MGR: Remove authenticator validity test from detect_cookie_safari() since 
        it is now used for additional cookies; this had already been done for 
        other browsers.

    clientgui/
        browser.cpp, .h
        mac/
            browser_safari.mm

Charlie 5 June 2009
    - MGR: CBOINCClientManager::ProcessExists() finds the process by name if 
        we don't have a pid (Mac, Linux) or process HANDLE (Windows).  On Mac
      and Linux, it returns the pid if the process was found.
    
    clientgui/
        BOINCClientManager.cpp, .h
    win_build/
        boincmgr.vcproj

David  5 June 2009
    - scheduler: improve example app plan function for multithread

    sched/
        sched_plan.cpp,h

Charlie 5 June 2009
    - MGR: Use code like get_client_mutex() to determine if client is running.  
        New CBOINCClientManager::KillClient() uses process name to kill client 
        if we don't have a pid (Mac, Linux) or process HANDLE (Windows).  
        NOTE: Windows implementation not yet finished.
    
    clientgui/
        BOINCClientManager.cpp, .h

Charlie 5 June 2009
    - MGR: Implement CBOINCClientManager::KillClient() and IsBOINCRunning() 
        for Windows.
        NOTE: I have confirmed that the "ps -a -x -c -o command,pid" command
        as used in IsBOINCRunning() should works in Ubuntu under VMWare, but 
        it needs to be tested on other Linux platforms.
        
    clientgui/
        BOINCClientManager.cpp, .h
    win_build/
        boincmgr.vcproj

Charlie 5 June 2009
    - lib: Fix FILE_LOCK::unlock() to reset fd to -1 so FILE_LOCK works 
        correctly with repeated calls.

    lib/
        filesys.cpp

Charlie 8 June 2009
    - lib: Fix compiler error on Windows.

    lib/
        filesys.cpp

David  8 June 2009
    - GUI RPC: include hostid in PROJECT
    - web: include timed-out and "client detached" results in error category

    html/inc/
        result.inc
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  8 June 2009
    - Manager: show host ID in project properties

    clientgui/
        DltItemProperties.cpp

Charlie 8 June 2009
    - Mac MGR: In Async RPC logic, use posix mutexes and conditions instead 
        of wxWidgets implementations on the Mac, as this appears to fix an 
        intermittent hang in wxCondition::Wait().
    
    clientgui/
        AsyncRPC.cpp, .h
        MainDocument.cpp. .h

Rom    9 June 2009
    - DIAG: Policy change: Only include the BOINC symbol store for BOINC
        binaries.  The old policy was kept around as a backwards compatibility
        thing before a new flag was added to the diagnostics to identify
        project applications.
        
    lib/
        stackwalker_win.cpp

Charlie 9 June 2009
    - lib: FILE_LOCK::lock() makes lockfile group-writable so both client and 
        manager can create and write it under sandbox security.

    lib/
        filesys.cpp

Charlie 10 June 2009
    - Mac screensaver: Add support for ProgressThruProcessors (PTP) branding.
    - Mac PTP Installer: Add support for ProgressThruProcessors (PTP) installer.

    clientscr/
        mac_saver_module.cpp
    mac_installer/
        PostInstall.cpp
        uninstall.cpp

David  10 June 2009
    - file deleter: detect cases where the upload/download dir doesn't exist,
        and treat it as a recoverable error (i.e., retry).
        The file deleter may run on a host that NSF-mounts
        the upload/download dirs, and NSF mounts can file.
    - scheduler: include WU#ID in log msgs for handled results

    sched/
        file_deleter.cpp
        sched_config.cpp
        sched_result.cpp

David  10 June 2009
    - web: allow projects to ban email addresses in certain domains.
        Add the following to html/project/project.inc:

        $banned_email_domains = array(
            "foo.bar",
            "blah"
        );

        Email addresses ending with any of those strings will be disallowed.
    - Web RPCs: have am_set_info.php and create_account.php
        do the same checking for email addresses (invalid, banned)
        as the other web code

    html/
        inc/
            user.inc
        user/
            am_set_info.php
            create_account.php
            edit_email_form.php
            edit_email_action.php

David  10 June 2009
    - update_versions: add --sign and --force options to enable automation
        (from Jeremy Cowles)

    tools/
        update_versions

David  10 June 2009
    - make_project and upgrade: add --srcdir option so you
        can run these commands from any directory
        (mostly from Gabor Gombas; added a fix for svnversion)

    configure.ac
    py/Boinc/
        boinc_path_config.py.in
        database.py
        setup_project.py
    test/
        testbase.py
    tools/
        make_project
        upgrade

David  10 June 2009
    - web: don't show user ID next to posts
    - web: fix [pre] bbcode

    html/
        inc/
            text_transform.inc
            forum.inc
        user/
            show_coproc.cpp
            main.css

Charlie 10 June 2009
    - MGR: use branded Manager name in async RPC Please Wait dialog.
    
    clientgui/
        AsyncRPC.cpp

Charlie 10 June 2009
    - Mac screensaver: Change "ProgressThruProcessors" to "Progress Thru Processors".
    - Mac PTP Installer: Change "ProgressThruProcessors" to 
        "Progress Thru Processors"
        New script to convert BOINC installer to Progress Thru Processors installer.

    clientscr/
        mac_saver_module.cpp
    mac_installer/
        make_ProgThruProc.sh (added)
        PostInstall.cpp
        uninstall.cpp

Charlie 11 June 2009
    Mac: Fix script to properly handle UTF-16 encoded InfoPlist.strings files.
    Mac: Update copyright date in InfoPlist.strings files to 2009.

    clientgui/
        mac/
            SetVersion.cpp
    mac_installer/
        make_ProgThruProc.sh

David  11 June 2009
    - server: move python modules from PROJECT/bin to PROJECT/py/Boinc.
        make_project now generates PROJECT/bin/boinc_path_config.py
        to ensure that the interpreter will find the modules.
        From Gabor Gombas.

    py/Boinc/
        setup_project.py
    sched/
        start
        testasm.py
        assimilator.py
    tools/
        parse_config
        xadd
        update_versions

David  11 June 2009
    - server: Use distutils for installing the python modules,
        and move files not part of the BOINC package from py/Boinc to py/
        From Gabor Gombas.

    configure.ac
    py/
        Makefile.am
        boinc_path_config.py.in (moved here)
        db_def_to_py (moved here)

David  11 June 2009
    - server: make the python code honor BOINC_PROJECT_PATH.
        It is now possible to use the same set of tools for multiple
        projects by setting BOINC_PROJECT_PATH.
        From Gabor Gombas.

    py/Boinc/
        boinc_project_path.py
    tools/
        parse_config
        update_versions
    sched/
        start
        assimilator.py

David  11 June 2009
    - server: 'start' now looks for programs to execute in $PATH,
        so the same set of binaries can be used to handle multiple projects.
        <projectroot>/bin is always prepended to $PATH
        to ensure that project-specific binaries always take precedence.
        From Gabor Gombas.

    sched/
        start

David  11 June 2009
    - server: Tools that should run by hand are installed under $(bindir).
        Daemons that are managed by 'start' go to $(libexecdir)/sched.
        The (F)CGI stuff goes to $(libexecdir)/cgi-bin.
        Finally, example applications go under $(libexecdir)/examples.

    apps/
        Makefile.am
    sched/
        Makefile.am
    tools/
        Makefile.am

Rom    11 June 2009
    PTP: Introduce 'Progress Thru Processors' to the Windows build
      environment. Use GridRepublic skin until the new one is available.
      
    client/win/
        boinc_cli.rc
        boinc_cmd.rc
    client/win/res/
        progress.ico (Added)
    clientctrl/
        boincsvcctrl.rc
    clientgui/
        BOINCGUIApp.rc
    clientgui/res/
        progress.ico (Added)
    clientgui/skins/Progress Thru Processors
        <Various Files>
    clientlib/win/
        boinc_dll.rc
    clientscr/
        boinc_ss.rc
    clientscr/res/
        boinc.jpg (Deleted)
    clientscr/res/
        progress.bmp (Added)
        progress.ico (Added)
        Scricon3.ico (Deleted)
    clienttray/
        boinc_tray.rc
    win_build/
        Progress.sln
        ptp_boinc_cli.vcproj
        ptp_boinc_dll.vcproj
        ptp_boinc_ss.vcproj
        ptp_boinccmd.vcproj
        ptp_boincmgr.vcproj
        ptp_boincsvcctrl.vcproj
        ptp_boinctray.vcproj

Rom    11 June 2009
    PTP: Add the 'Progress Thru Processors' screensaver to the
      source tree.
      
    clientscr/progress
        <Added Various Files>

David  11 June 2009
    - server: suppress verbosity of update_translations
        in make_project and upgrade

    html/ops/
        update_translations.php
    tools/
        make_project
        upgrade

Rom    11 June 2009
    - SCR: Update default values per BOINC defaults.
    - PTP: Add files needed by the installer(s).
    
    clientscr/progress/
        <Added and Deleted various files>
    clientscr/
        screensaver.h
    win_build/installerv2/
        Progress.ism
        Progressx64.ism
    win_build/installerv2/redist/0409/
        ptp-eula.rtf
    win_build/installerv2/redist/Progress/
        acct_mgr_url.xml
        progress.ico
        ss_config.xml

Charlie 11 June 2009
    - Mac MGR: strip /n from command field of PROCINFO struct so <exclusive_app> 
        log flag works properly on Mac.
    - MGR: Change CBOINCClientManager::KillClient() to get client pid from 
        procinfo_setup() on all non-Windows platforms.
    - SCR: restore boinc.jpg file erroneously removed from SVN.

    clientgui/
        BOINCClientManager.cpp
    clientscr/
        res/
            boinc.jpg (restored)
    lib/
        procinfo_mac.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  11 June 2009
    - server: improve the Python assimilator framework;
        add an assimilator for PyMW (Python master/worker);
        remove old C++ PyMW assimilator
        (from Jeremy Cowles)

    sched/
        Makefile.am
        assimilator.py
        pymw_assimilator.py
        testasm.py

David  11 June 2009
    - web: country flags

    html/inc/
        countries.inc
        forum.inc

Charlie 12 June 2009
    Mac Sandbox: check_security() writes path of bad file to stderr for some  
        error codes.
        
    client/
        check_security.cpp
    clientgui/
        BOINCGUIApp.cpp

Rom    12 June 2009
    - WINSETUP: Change the install validation code so that it reads the MSI
        database to determine what executable names to check instead of
        hard coding them. BOINCMGR is renamed to Progress Thru Process or
        in the case of GridRepublic it would be GridRepublic Desktop.
        
    win_build/installerv2/
        Progress.ism
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.cpp, .h
        CAValidateInstall.cpp
        CAVerifyInstallDirectories.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  12 June 2009
    - web: fix up country flags a little

    html/
        inc/
            forum.inc
            countries.inc
        user/
            main.css

Rom    12 June 2009
    - PTPSCR: Updates from Carl
    
    clientscr/progress/win/x86/
        boincscr.exe
        gradient.jpg

Rom    12 June 2009
    - MGR: Introduce the notion of a Return URL to the attach to
        account manager wizard.  When successfully attached the
        account manager can have the manager launch a browser to
        a given URL by way of a cookie. It only works if the logon
        credentials were also given to the manager by way of a cookie.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerProcessingPage.cpp
        browser.cpp, .h
        CompletionPage.cpp
        WizardAttachProject.cpp, .h

Rom    12 June 2009
    - MGR: Introduce the cookie detection failure URL to the
        acct_mgr_logon.xml file. If the cookies cannot be found provide
        a hyperlink control on the AcctountInfo page in the wizard
        which will point to a fallback URL the user can go to to
        find out what logon credentials to use.
        
    client/
        acct_mgr.cpp, .h
        gui_rpc_server_ops.cpp
    clientgui/
        AccountInfoPage.cpp, .h
        BOINCWizards.h
        WizardAttachProject.cpp, .h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  12 June 2009
    - server: backed out recent changes to "start"; they broke something

    sched/
        start

Rom    12 June 2009
    - MGR: The ReturnURL cookie is optional, not required.
    
    clientgui/
        browser.cpp

Charlie 12 June 2009
    - MGR: update Wizard text to fit in dialog on Mac and to be more general.
    - Sandbox: Fix permissions for branded screensaver coordinators.
    - Mac Installer: check that brandID is valid.
    - Mac Uninstaller: don't delete BOINC Data directory or users' Manager 
        settings.  Check in Rez source for uninstaller resources instead of 
        resource file, to make it easier to modify on newer versions of XCode.

    client/
        check_security.cpp
    clientgui/
        AccountInfoPage.cpp
        mac/
            SetupSecurity.cpp
    mac_installer/
        PostInstall.cpp
        uninstall.cpp
        Uninstaller.rsrc     
        Uninstaller.r (added)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 13 June 2009
    - MGR: Wizard retries acct_mgr_rpc() if acct_mgr_rpc_poll() sets ERR_RETRY.

    clientgui/
        AccountManagerProcessingPage.cpp

Rom    13 June 2009
    - MGR: Fix browser cookie detection on Windows machines where UAC is turned
        on.  It appears it has never worked, and I imagine it would effect
        70% of our Windows Vista and Windows 7 user base.

    clientgui/
        browser.cpp
    lib/
        miofile.cpp, .h

Rom    13 June 2009
    - MGR: Expand on Charlie's last checkin to include the rest of the polling
        RPCs in the wizard. The polling RPCs would return ERR_RETRY when
        the CC was in the middle of some other GUI_HTTP op (version check,
        project list download).
    
    clientgui/
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        ProjectProcessingPage.cpp
        ProjectPropertiesPage.cpp

Charlie 14 June 2009
    - MGR: When automatically running Synchronize AM Wizard ar Manager launch, 
        hide the main window only if it was not previously shown.
    - Mac Installer: check in a copy of GR / PTP signing key with UNIX / Mac 
        line endings.

    clientgui/
        AdvancedFrame.cpp
    mac_installer/
        Progress/
            acct_mgr_url.xml (added)

Rom    14 June 2009
    - INSTALL: Make sure both installers have the cookie required flag so that
        the correct information is displayed on the AccountInfo page in the
        Wizard, if and when a browsers cookie could not be detected.
        
    mac_installer/Progress/
        acct_mgr_url.xml
    win_build/installerv2/redist/progress/    
        acct_mgr_url.xml

David  14 June 2009
    - web RPC: tweak to forum_get_data.php

    html/user/
        forum_get_data.php

Charlie 15 June 2009
    - MGR: If LOCKFILE doesn't already exist, core client isn't running so skip 
        further testing.  This avoids a very rare possible race condition and is 
        more efficient.

    clientgui/
        BOINCClientManager.cpp

David  15 June 2009
    - python scripts: fix bugs, restore latest version of "start"

    sched/
        start
    py/Boinc/
        boinc_project_path.py

David  15 June 2009
    - wrapper: fix bug in passing wrapper's args to subjobs

    samples/wrapper/
        wrapper.cpp

David  16 June 2009
    - web: change "CPU time" to "run time"

    html/inc/
        result.inc

David  16 June 2009
    - client: don't require that file upload URLs contain "file_upload_handler".

    client/
        client_types.cpp,h

David  16 June 2009
    - don't include config.h from network.h (Gabor Gombas)

    client/
        gui_rpc_server.cpp
    m4/
        boinc_getsockopt.m4
    lib/
        network.cpp,h

David  16 June 2009
    - don't include config.h from parse.h
    - manager: compile fix

    clientgui/
        BOINCClientManager.cpp
    lib/
        parse.h
        util.cpp

David  16 June 2009
    - build system: don't install config.h

    Makefile.am
    lib/
        Makefile.am

David  16 June 2009
    - python assimilator fix

    sched/
        assimilator.py

David  16 June 2009
    - client: prepend rather than append to LD_LIBRARY_PATH;
        on Mac, change DYLIB_LIBRARY_PATH also.

    client/
        app_start.cpp

Charlie 16 June 2009
    - MGR: Compile fix of Rom's fix to David's compile fix.

    clientgui/
        BOINCClientManager.cpp

David  16 June 2009
    - lib: created a new file for declaring "replacements"
        for functions like strlcpy() etc.
        config.h is included here rather than in str_util.h

    lib/
        str_replace.h (new)
    ... and a lot of .cpp's

David  16 June 2009
    - pymw assimilator fixes from Jeremy

    sched/
        pymw_assimilator.py

David  16 June 2009
    - compile fixes for Linux

    client/
        gui_rpc_server.cpp
    lib/
        network.h
        
Charlie 16 June 2009
    - MGR: Fix Mac compile error in addition of DYLIB_LIBRARY_PATH.
    - MGR: Fix several Mac build breaks due to addition of str_replace.h 
        (had to add ../lib to search paths of several targets.)
        
    client/
        app_start.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  17 June 2009
    - SS: remove unused func

    clientscr/
        ss_app.cpp

Rom    18 June 2009
    - MGR: Fix browser cookie lookup bug I introduced when I added
        support for looking up cookies in Internet Explorer low rights
        environments. InternetGetCookie expects the hostname and
        domainname to be presented as URLs.
        
    clientgui/
        browser.cpp

Rom    18 June 2009
    - MGR: Fix the case where user visits Grid Republic with IE 7 and
        has a space character in their username.  IE6 and below kept
        the space as part of the filename, IE7 and above replace the
        space with an underscore.
        
    clientgui/
        browser.cpp

David  18 June 2009
    - setup script: remove old pymw stuff

    py/Boinc/
        setup_project.py

Rom    19 June 2009
    - MGR: Massive wizard cleanup
        - Remove diagnostic framework, it wasn't being used anymore
            and basically cluttered things up.
        - Remove the notion of the Account Manager Remove wizard,
            it hasn't ever been used.
        - Simplify the welcome page
        - Trim down the height of the wizard by hiding the new
            cookie controls on the Account Info page.  The wizard
            needs to stay compatible with small displays.
    - MGR: Only display the 'This is not a BOINC project' on an
        HTTP 404 error.  For a gethostbyname, xml parsing, and
        socket connect error display the 'project is temporarly
        unavailable'.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerInfoPage.cpp
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        BOINCBaseWizard.cpp, .h
        BOINCWizards.h
        CompletionPage.cpp
        ProjectInfoPage.cpp
        ProjectListCtrl.cpp
        ProjectProcessingPage.cpp
        ProjectPropertiesPage.cpp, .h
        UnavailablePage.cpp
        WelcomePage.cpp, .h
        WizardAttachProject.cpp

Rom    19 June 2009
    - MGR: Fix a long standing bug where the project list control
        for the account manager info page and the project info page
        was not consuming available screen space.  Previously
        we hacked around it by setting an explicit size.
        
        Note: this works on Windows, I don't yet know about Mac and
          Linux.
          
    clientgui/
        AccountManagerInfoPage.cpp, .h
        ProjectInfoPage.cpp
        ProjectListCtrl.cpp, .h

Charlie 19 June 2009
    - MGR: Fix fatal error which caused crash in Account Manager Wizard.
    - Mac Installer: Fix bugs in scripts for converting BOINC installer to 
        Progress Thru Processors installer and to GridRepublic installer.

    clientgui/
        AccountManagerInfoPage.cpp
    mac_installer/
        make_GridRepublic.sh
        make_ProgThruProc.sh

Rom    19 June 2009
    - MGR: Make the Account Manager Properties page and the Project
        Properties page the start for all automated wizard processes
        so that we can successfully handle the need to check for
        proxy servers.  When directly advancing to the Processing
        pages the proxy server checks were being skipped.
    - MGR: Add some more smarts to the terms of use page which should
        advance to the processing pages and skip the Account Info
        page when the desired credentials are already known.

    clientgui/
        AccountInfoPage.cpp
        AccountManagerPropertiesPage.cpp, .h
        ProjectPropertiesPage.cpp, .h
        TermsOfUsePage.cpp, .h
        WelcomePage.cpp
        WizardAttachProject.cpp

David  19 June 2009
    - install: don't install std_fixes.h or msg_queue.cpp
    - remove some unused code
    - scheduler: small code cleanup

    lib/
        Makefile.am
        network.u
        util.h
    sched/
        sched_send.cpp

Rom    19 June 2009
    - WINSETUP: Provide a mechinism in the installer where the installer
        can override the previous stored state from a previous installation.
        
        NOTE: Needed becuase PTP isn't going to be supporting 'Application
          execution mode', at least not with the initial installer.
          
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CARestoreSetupState.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  19 June 2009
    - scheduler: fix <max_wus_in_progress> code

    sched/
        sched_send.cpp

Rom    19 June 2009
    - MGR: Keep the wizard state mahine from prematurly moving on without
        checking network connectivity and whether credentials have been
        detected.
        
    clientgui/
        AccountManagerPropertiesPage.cpp
        ProjectPropertiesPage.cpp

Rom    19 June 2009
    - Mac Install: Fix an off by one error reported during a security audit
    
    mac_install/
        CustomInstall.cpp

David  22 June 2009
    - Mac install: fix things a better way
    - install: don't install internal .h files
    - scheduler: fix spurious "reached limit of 0 GPU tasks" message,
        slight code cleanup

    lib/
        Makefile.am
    mac_installer/
        CustomInstall.cpp
    sched/
        sched_send.cpp
        sched_plan.cpp
        server_types.cpp

David  22 June 2009
    - make_project/upgrade: install pymw assimilator
    - make pymw_assimilator.py executable

    py/Boinc/
        setup_projects.py
    sched/
        pymw_assimilator.py (set svn:executable)

Rom    23 June 2009
    - MGR: First stab at making the ProjectList control keyboard
        navigatable.  Tab order isn't quite right yet for the
        Project Info page or the Account Manager Info page, but
        that'll be another commit. refs #442
        
    clientgui/
        AccountManagerInfoPage.cpp, .h
        ProjectInfoPage.cpp, .h
        ProjectListCtrl.cpp, .h

David  23 June 2009
    - web: add buttons for BBCode editing.
        From John Hallissey

    html/
        inc/
            bbcode_bbdodehtml.inc
            pm.inc
            util.inc
        user/
            bbcode_toolbar.js
            forum_edit.php
            forum_post.php
            forum_reply.php

David  23 June 2009
    - web: code cleanup

Jeff 23 June 2009
    Added table state_counts. This will allow application programs
    that make decisions based on the count of WUs or results by state
    to do so by querying this very small table rather than by doing 
    expensive count queries on the WU and result tables.   

    Of course some other program will have to do the count queries 
    periodically in order to update the state_counts table. But, 
    depending on the application, this can result in fewer such queries 
    overall. The motivation for this change was the speed up of SETI@Home 
    work generation.
    
    db/
        boinc_db.cpp
        boinc_db.h
        schema.sql
    html/
        ops/
            db_update.php

Rom    23 June 2009
    - MGR: Remove event handlers for wxEVT_SET_FOCUS and wxEVT_KILL_FOCUS,
        we are no longer removing the highlight on a project unless
        a new project is selected.  This continues to show that a certain
        project is still selected even when you switch to the ProjectURL
        control.  Anyways, the Mac doesn't like the focus events.
        
        clientgui/
            ProjectListCtrl.cpp, .h

Charlie 23 June 2009
    - PTP: check in new PTP Mac icons and images.
    
    clientgui/
        mac/
            ProgThruProg.tiff
        res/
            ProgThruProc.icns
            PTP_install.icns
            PTP_uninstall.icns
    clientscr/
        res/
            ProgThruProc_ss_logo.png

David  26 June 2009
    - client: when suspending a GPU job,
        always remove it from memory, even if it hasn't checkpointed.
        Otherwise we'll typically run another GPU job right away,
        and it will bomb out or revert to CPU mode because it
        can't allocate video RAM

    client/
        app.cpp

Charlie 27 June 2009
    Mac: Fix missing file name characters in script to make PTP installer.

    mac_installer/
        make_ProgThruProc.sh

David  27 June 2009
    - fix typo in schema

    db/
        schema.sql

Rom    29 June 2009
    - MGR: My first attempt to handle the project list control was turning
        into a mess and becoming very complicated, as my former mentor used
        to say "if you are having to try too hard, you are doing it wrong."
        
        Reimplement the project list control as a wxHtmlListBox which handles
        keyboard navigation correctly and allows us to have variable height
        list items.  Another perk is the ability to detect when different
        HTML elements are clicked on which might be useful for anonymous
        attach at some point in time in the future.
        
    clientgui/
        AccountManagerInfoPage.cpp
        AdvancedFrame.cpp
        BOINCGUIApp.cpp
        BOINCWizards.h
        ProjectInfoPage.cpp
        ProjectListCtrl.cpp, .h
        stdwx.h

Rom    29 June 2009
    - WINSETUP: Add the PTP executable to the list of processes to terminate
        when setup is launched.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CAShutdownBOINCManager.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

Charlie 29 June 2009
    - Mac Uninstaller: add blank lines between items user should delete; 
        fix cosmetic bug.
    
    mac_installer/
        uninstall.cpp

Charlie 29 June 2009
    - MGR: fix compile breaks on non_Windows systems.
        NOTE: wxUSE_ACCESSIBILITY is defined as 0 on the Mac, use 
        "#if wxUSE_ACCESSIBILITY", not "#ifdef wxUSE_ACCESSIBILITY".
        
    clientgui/
        ProjectListCtrl.cpp, .h

Rytis  30 June 2009
    - Sched: config option not to store stderr_out if exit_status==0 (to
        save on DB size). With help from Nicolas Alvarez.
    
    sched/
        sched_config.cpp
        sched_config.h
        sched_result.cpp

Rom    30 June 2009
    - MGR: Remove project list randomization, sort on name.
    
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  30 June 2009
    - client: record the time results are received.
        Process non-EDF GPU jobs in this order.

    client/
        client_types.cpp,h
        cpu_sched.cpp
        cs_scheduler.cpp
    clientgui/
        DltItemProperties.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

Rom    30 June 2009
    - MGR: Previous sorting method wasn't working, use a sort
        function pointer instead.
        
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
    

David  30 June 2009
    - manager: if a project is down, say that instead of unknown error msg
        Programming style notes:
        1)
            x = y;

            instead of

            if (y) {
                x = true;
            } else {
                x = false;
            }

        2) use a descriptive name instead, not bSuccessfulCondition.
            Variables are free.
    clientgui/
        ProjectPropertiesPage.cpp
        UnavailablePage.cpp

David  1 July 2009
    - API: add boinc_elapsed_time() to get elapsed time since start of episode;
        add APP_INIT_DATA::starting_elapsed_time to get
        elapsed time from previous episodes

    api/
        boinc_api.cpp,h
    client/
        app.cpp,h
        app_control.cpp
        app_start.cpp
    lib/
        app_ipc.cpp,h

David  1 July 2009
    - PyMW assimilator fixes from Jeremy

    sched/
        pymw_assimilator.py

David  6 July 2009
    - fix client simulator
    - web: if DB server down, say so

    client/
        sim_util.cpp
    html/inc/
        boinc_db.inc

Charlie 7 July 2009
    - Mac Installer: use escaped form of branded screensaver name when needed.

    mac_installer/
        PostInstall.cpp

David  7 July 2009
    - GUI RPC: add get_message_seqno() RPC.  fixes #931

    client/
        work_fetch.cpp
        boinc_cmd.cpp
        gui_rpc_server_ops.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

Charlie 8 July 2009
    - Mac Installer: If BOINC screensaver is not set for every user, set it 
        for all users after getting approval from installing user.
    - Mac Installer: fix bug in scripts to create branded installers.

    mac_installer/
        make_GridRepublic.sh
        make_ProgThruProc.sh
        PostInstall.cpp
        GR-ReadMe.rtf
        PTP-ReadMe.rtf (added)
        ReadMe.rtf

David  9 July 2009
    - client: error if a <file_info> in app_info.xml has any URLs
    - client: don't write file_infos with no URLs to client_state.xml
        for anon platform project; they must be from app_info.xml
        
    client/
        cs_statefile.cpp
    sched/
        assimilate_handler.h

David  10 July 2009
    - client: restored code for project-wide backoff on file
        uploads and downloads.
        I originally added this on 30 Sept 2005
        and disabled it 2 weeks later because there were reports of problems.
        However, we need this functionality
        (e.g. on GPU hosts with hundreds of files to upload,
        we need to back off after a few failures, not try all of them).
        I added messages (<file_xfer_debug>) so you can see what's going on.
        Fixes #932.

    client/
        client_types.cpp,h
        pers_file_xfer.cpp

David  10 July 2009
    - client: if malloc fails in MFILE writes, exit.
        We don't check the return values of printf() anywhere,
        and it's dangerous for the client to continue if it
        thinks something got written that didn't.
        Fixes #281

    lib/
        mfile.cpp

Eric K  14 July 2009
    - libraries:  Moved crypt.o out of libboinc and into libboinc_crypt.
      Applications that need crypt.o will need to explicitly link
      libboinc_crypt.

    client/
        Makefile.am
    lib/
    Makefile.am
    Makefile.incl


Rom    15 July 2009
    - client: Remove backwards compatible CPU feature detection code
        since we no longer support Win9x
        
    client/
        hostinfo_win.cpp

Rom    15 July 2009
    - clientlib: Remove backwards compatible mouse and keyboard activity
        detection code since we no longer support Win9x
        
    clientlib/win/
        boinc_dll.cpp
        IdleTracker.cpp
        stdafx.h

David  16 July 2009
    - client: code cleanup for project-level file xfer backoff

    client/
        client_types.cpp,h
        client_state.cpp
        gui_rpc_server_ops.cpp
        pers_file_xfer.cpp

David  16 July 2009
    - client/manager/GUI RPC: show project-level backoffs

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

David  16 July 2009
    - client: changed file upload logic
        Old: each upload attempt consists of two HTTP requests:
            the 1st to get the current file size on server,
            the 2nd to upload the remainder of the file.
        Problem:
            a) if the upload server is overloaded and requests
                are succeeding with probability X,
                then the chance of both requests succeeding is X^2.
                So e.g. a per-request success rate of 0.1
                becomes an overall success rate of 0.01.
            b) the "get file size" request can be avoided in some cases.
        New:
            If we've already queried the file size
            and haven't uploaded any additional bytes,
            don't query the file size again.

    client/
        pers_file_xfer.cpp

David  16 July 2009
    - client: if file < 8KB, upload it in its entirety and skip size check
    - client: (refinement to previous checkin)
        don't skip file size check if file has multiple upload URLs.
        We might have uploaded different amounts on different servers.

    client/
        client_types.cpp
        file_xfer.cpp,h
        pers_file_xfer.cpp

David  16 July 2009
    - client: change the way a resource's "estimated delay"
        (passed to server for crude deadline check) is computed.
        Old: estimated delay is the interval for which the resource
            is fully used (i.e., all instances busy).
        Problem: this may cause unnecessary project starvation.
            example: 1 CPU machine, has a month-long CPDN job
            with a 1-year deadline (it's not in deadline trouble).
            Then the CPU estimated delay will be 1 month,
            and the client won't get any work from projects
            with deadlines shorter than 1 month.
        New: estimated delay is the latest time at which the
            resource is fully used and is being used by at least 1 job
            that is projected to miss its deadline under RR.

        Note: this isn't precise, but I don't think we can improve it
        much without getting a lot more complex.

    client/
        rr_sim.cpp
        work_fetch.cpp,h

Rom    17 July 2009
    - Remove boinc_zip(InfoZip) from the main BOINC tree
    - Remove boinc_zip from the build system
    
    /
        configure.ac
        Makefile.am

David  17 July 2009
    - client: 2nd try on my last checkin.
        We need to estimate 2 different delays for each resource type:
        1) "saturated time": the time the resource will be fully utilized
            (new name for the old "estimated delay").
            This is used to compute work requests.
        2) "busy time": the time a new job would have to wait
            to start using this resource.
            This is passed to the scheduler and used for a crude deadline check.
            Note: this is ill-defined; a single number doesn't suffice.
            But as a very rough estimate, I'll use the sum of
                (J.duration * J.ninstances)/ninstances
            over all jobs that miss their deadline under RR sim.

    client/
        work_fetch.cpp,h
        rr_sim.cpp
        cs_scheduler.cpp

David  20 July 2009
    - lib: gcc 4.4 fix; fixes #854
    lib/
        str_replace.h

David  22 July 2009
    - client: add a bunch of debugging messages (<task_debug>)
        for showing how GPU instances are being reserved
    - scheduler: add "sse3" plan class example
    - web: add option (NO_TEAMS constant) for suppressing teams

    client/
        app_start.cpp
        hostinfo_network.cpp
    sched/
        sched_plan.cpp,h
    html/inc/
        user.inc
    lib/
        coproc.cpp
        str_util.h

David  22 July 2009
    - client: define "too many uploads" (for work fetch) as
        2 * max(ncpus, ngpus);
        show this in the state displayed by <work_fetch_debug>
    - manager: show project-wide backoff in transfers tab

    client/
        client_types.h
        work_fetch.cpp
    clientgui/
        ViewTransfers.cpp

Rom    23 July 2009
    - client: Remove some more Win9x code.
    - client: Add some messages while handling Windows power events.
    
    client/
        main.cpp

Rom    23 July 2009
    - client: Treat power events similiar to the snooze events, assign
        a timeout so that when we resume from suspend/hibernate we
        restore the previous activity states.
        
    client/
        main.cpp

Rom    23 July 2009
    - WINSETUP: Prevent a pathing problem with the client_auth.xml
        creation by prepending a \ in front of the filename.
        
    winbuild/installerv2/redist/Windows/src/boinccas/
        boinccas.rc
        CACreateClientAuthFile.cpp
    winbuild/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    winbuild/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  23 July 2009
    - manager: fix typos in attach project wizard

    clientgui/
        ProjectProcessingPage.cpp

David  24 July 2009
    - client: in get_project_config_poll() GUI RPC,
        return ERR_IN_PROGRESS if the reference site check is in progress.
        This hopefully fixes a bug where:
        - the user is connected via a proxy
        - the manager is run for the first time, and an attach is tried
        - the get_project_config.php fetch fails because no proxy config
        - the manager gets the CC_STATUS before the ref site check has
            finished, so it thinks there's a network connection,
            and it doesn't ask the user for proxy info

    client/
        gui_rpc_server_ops.cpp
        net_stats.cpp,h
    clientgui/
        ProjectPropertiesPage.cpp
    html/
        inc/
            util.inc
        user/
            login_action.php

Rom    24 July 2009
    - lib: more code cleanup
    
    lib/
        win_util.cpp, .h

Rom    24 July 2009
    - lib: revert previous commit, things in lib end up being linked
        into project applications, projects may want to continue
        supporting Win9x.
        
    lib/
        win_util.cpp, .h

Rom    24 July 2009
    - WINSCR: Remove Win9x compatibility code from the screen saver.

    clientscr/    
        screensaver.cpp
        screensaver_win.cpp
        screensaver_win.h

Rom    25 July 2009
    - MGR: Use the BOINC Service Control utility (boincsvcctrl.exe) to
        start/stop the BOINC Service on Windows now.  Starting with
        Windows Vista a normal admin account is started with a
        restricted token, meaning that a process has to be elevated
        in order to start and stop services.  The recommended way to
        handle this whole process is to create a stub application that
        has an application manifest embedded within it that tells
        Windows that full admin rights are required and then launch
        that program (boincsvcctrl.exe) from the application 
        (boincmgr.exe) which normally runs with the restricted token.
        
    clientctrl/
        boincsvcctrl.cpp
    clientlib/win/
        Service.cpp

Rom    25 July 2009
    - MGR: Be sure to launch the default screensaver in test mode
        when the manager is starting up, otherwise the default
        screensaver might lock up waiting on user input to approve
        firewall updates to the rule set.
        
    clientgui/
        BOINCGUIApp.cpp, .h
        sg_BoincSimpleGUI.cpp

Rom    25 July 2009
    - MGR: Refine yesterdays checkin with support for the BOINC
        Service Control utility, use ShellExecuteEx instead of
        CreateProcess.  CreateProcess doesn't have the ability
        to elevate processes.

    clientlib/win/
        Service.cpp

Rom    25 July 2009
    - MGR: Refine todays checkin with support for the BOINC
        Service Control utility, don't use the runas verb on systems
        older than Vista.

    clientlib/win/
        Service.cpp

David  27 July 2009
    - client: fix crashing bug introduced in [18605]

    client/
        pers_file_xfer.cpp

Eric K 27 July 2009
    - server: fix for build of fcgi_file_upload_handler

    lib/
        crypt.h
    sched/
        file_upload_handler.cpp

Rom    27 July 2009
    - client: Remove Win9x compatibility code from memory detection
        routine.
        
    client/
        hostinfo_win.cpp

Rom    27 July 2009
    - MGR: Special case ERR_GETHOSTBYNAME errors in the wizard, majority
        case for DNS failures suggest that the user might need a proxy
        to be defined instead or this project is unavailable or this
        account manager is unavailable.
        
    clientgui/
        AccountManagerPropertiesPage.cpp, .h
        ProjectPropertiesPage.cpp, .h

Rom    27 July 2009
    - client: There was already a way to check if the reference site
        check was in progress, I missed it through my first pass
        through the manager code while trying to debug the proxy problem
        get_cc_config returns NETWORK_STATUS_LOOKUP_PENDING which
        then causes the manager to call get_cc_status again.
        
    client/
        gui_rpc_server_ops.cpp
        net_stats.cpp, .h

Rom    27 July 2009
    - MGR: Don't make ERR_FILE_NOT_FOUND part of the requirements
        to detect the need for a proxy server.
        
    clientgui/
        AccountManagerPropertiesPage.cpp
        ProjectPropertiesPage.cpp

Rom    28 July 2008
    - MGR: Fix an endless loop during wizard creation, any automatic
        true conditions in the GetNext() GetPrev() logic causes
        the wizard to traverse the page and then look for the next
        page.
        
    clientgui/
        AccountManagerPropertiesPage.cpp
        ProjectPropertiesPage.cpp

David  28 July 2009
    - client (Linux): when launching apps, put a relative path
        to the executable (../../projects/x/y) into argv[0],
        not just the executable filename.
        Apparently the new NVIDIA drivers have a bug that cause
        CUDA apps to crash unless this is done.
    - Scheduler: in no-host-ID case, don't mark results as "detached"
        if request contains any in-progress results

    client/
        app_start.cpp
    sched/
        handle_request.cpp

David  28 July 2009
    - client: if an HTTP op fails within 30 sec of client startup,
        don't skip the reference site check.
        Instead, defer the reference site check until 30 secs after startup.
        Also, if during this interval (when the check has been requested
        but not started) return net status as LOOKUP_PENDING

    client/
        net_stats.cpp

David  28 July 2009
    - scheduler: improved messages for debug_send

    sched/
        sched_send.cpp

Rom    29 July 2009
    - MGR: Re-enable the ability for the manager to detect a temporary
        name failure vs needing a proxy server or something like that.
        
    clientgui/
        AccountManagerPropertiesPage.cpp, .h
        ProjectPropertiesPage.cpp, .h

David  29 July 2009
    - scheduler: Gianni requested a feature where jobs have a
        "min # of GPU processors" attribute (stored in batch)
        and are sent only to hosts whose GPUs have at least this #.

        The logical place for this is in the scoring function, JOB::get_score().
        I added a clause (#ifdef'd out) that does this.
        It rejects the WU if #procs is too small,
        otherwise it adds min/actual to the score.
        This favors sending jobs that need lots of procs to GPUs that have them.
        
    sched/
        sched_score.cpp
        server_types.h

David  29 July 2009
    - scheduler: on second thought, it would be better to add the above
        feature without requiring use of score-based scheduling.
        So add a new customizable function, wu_is_infeasible_custom(),
        where projects can put job-specific checks.

        Also, move customizable functions (of which there are now 4)
        to a new file, sched_customize.cpp.

    sched/
        Makefile.am
        sched_customize.cpp,h
        sched_version.cpp
        sched_send.cpp
        handle_request.cpp

David  29 July 2009
    - client: to enumerate CUDA devices, use the functions in libcuda.so
        (which ships with driver) rather than libcudart.so
        (this eliminates the need to bundle libcudart.so with the client)
        The functions are documented here:
        http://developer.download.nvidia.com/compute/cuda/2_3/toolkit/docs/online/index.html

    lib/
        coproc.cpp

Rom    29 July 2009
    - client: Initial swipe at automatic proxy server configuration
        detection on Windows.  Fixes #35
        
    client/
        cs_cmdline.cpp
        http_curl.cpp
        http_curl.h
    lib/
        boinc_win.h
        proxy_info.cpp
        proxy_info.h
        util.cpp
        win_util.h

David  30 July 2009
    - scheduler: compile fixes

    sched/
        sched_customize.cpp

David  31 July 2009
    - file upload handler: don't treat zero-length file as an error!
        (This bug has been there since 28 Oct 2004)
    - GUI RPC and manager: include project backoff in FILE_TRANSFER,
        so that manager gets up-to-date value

    clientgui/
        ViewTransfers.cpp
    client/
        file_xfer.cpp
        client_types.cpp
    sched/
        file_upload_handler.cpp
    lib/
        gui_rpc_client_ops.cpp
        gui_rpc_client.h

Rom    2 Aug 2009
    - client: refactor the CC startup process, move majority of the
        windows code into sysmon_win.cpp, .h
        
    client/
        client_state.cpp, .h
        cpp.h
        http_curl.cpp
        main.cpp, .h
        net_stats.cpp
        sysmon_win.cpp, .h

David  3 Aug 2009
    - scheduler: add plan class for CUDA 2.3

    sched/
        sched_customize.cpp,h
        sched_version.cpp

Charlie 3 Aug 2009
    - client: fix compiler warning (too few args for print format)
    - Mac: fix compile breaks
    
    client/
        app_start.cpp
        main.cpp
    clientgui/
        mac/
            config.h

Charlie 3 Aug 2009
    - Mac client: client would crash if an older version (< 2.3) of CUDA 
        driver is installed because __cuDriverGetVersion does not exist, 
        so test for that and display a message if driver is out of date.

    lib/
        coproc.cpp

Charlie 7 Aug 2009
    - client: More efficient implementation of active_only flag in 
        get_results RPC.
    - MGR: Implement "Show active tasks / Show all tasks" button.
    
    client/
        cs_statefile.cpp
    clientgui/
        AsyncRPC.cpp, .h
        Events.h    
        MainDocument.cpp, .h
        ViewWork.cpp,.h
    lib/
        gui_rpc_client_ops.cpp

Rom    7 Aug 2009
    - client: Second pass through the automatic proxy detection code.
    
        During the first pass we learned that the whole process of
        proxy detection on Win XP machines could take a few seconds
        even with no proxies to be detected, now the proxy detection
        code is executed in the same thread that is monitoring for
        power change events.
        
    client/
        cs_cmdline.cpp
        http_curl.cpp
        http_curl.h
        http_curl_win.h
        net_stats.cpp
        sysmon_win.cpp, .h
    lib/
        parse.cpp, .h
        proxy_info.cpp, .h

Charlie 7 Aug 2009
    - client fix crash bug introduced by changing PROXY_INFO strings 
        from char[] to std::string.
    - client: fix compiler warnings "call will abort at run time."
    - Sandbox: add a couple of casts for compiler warnings.
      
    client/
        app_start.cpp
        check_security.cpp
        client_state.cpp
        http_curl.cpp
    clientgui/
        mac/
            SetupSecurity.cpp

Charlie 7 Aug 2009
    - MGR: Test two changes which might avoid a problem when the client 
        is heavily loaded (e.g, very many tasks), where the RPC Wait 
        dialog may appear continuously:
        (1) Delay periodic RPCs for 1 second after the dialog closes.
        (2) In functions to retrieve cached RPC data, don't do a demand 
            RPC just because the time since th last such RPC exceeds the 
            normal periodic RPC rates.  We still force the RPC if the 
            this RPC has never been called since the Manager was launched 
            or if (for some RPCs) called with the bForce argument TRUE.
            This change #2 can be removed by setting USE_CACHE_TIMEOUTS
            to 0.
            
    clientgui/
        AsyncRPC.cpp
        MainDocument.cpp, .h

David  9 Aug 2009
    - validator: prepare for code cleanup

    sched/
        validate_util.cpp
        validator.cpp

David  12 Aug 2009
    - server code: moved everything related to credit-granting to credit.cpp,
        where it can be used by trickle handlers as well as by validators.

    sched/
        credit.cpp,h
        validate_util.cpp,h
        validator.cpp

David  12 Aug 2009
    - GUI RPC: fix memory leak in authorize()

    lib/
        gui_rpc_client.cpp

David  13 Aug 2009
    - client (Unix): fix bug that caused GPU reservation to not work.
        The problem: we were doing the reservation after the fork(),
        so that the data structure it changed was the app's, not the client's.

    client/
        app_start.cpp

David  13 Aug 2009
    - start: don't print "XML parse error" message if run_state file
        doesn't exist (e.g. when start new project)

    py/Boinc/
        boincxml.py

David  13 Aug 2009
    - scheduler: fixes for cuda23 plan class

    sched/
        sched_customize.cpp

David  14 Aug 2009
    - client: try to fix situations where the scheduler
        runs GPU jobs in a seemingly random order,
        or preempts GPU jobs needlessly.
        The change has two parts:
        1) sort the "results" vector by received_time,
            so that the RR simulation processes GPU jobs FIFO
            (in case of tie, use something deterministic: result name)
        2) in the CPU scheduler (earliest_deadline_result())
            instead of choosing the earliest-deadline GPU job that
            misses its deadline,
            pick the earliest_deadline GPU from a project that
            has a deadline miss for that GPU type
            (this is what's done in the CPU case)
    - client: fix bug where if you have an exclusive app,
        then remove it from cc_config.xml and do "update config",
        it doesn't go away.
        Need to clear the list before parsing.

    client/
        client_state.h
        cpu_sched.cpp
        cs_statefile.cpp
        log_flags.cpp,h
        rr_sim.cpp
        work_fetch.h

David  14 Aug 2009
    - client: don't try to maintain GPU work for all projects,
        since use FIFO rather than RR schedling for GPUs

    client/
        work_fetch.cpp

David  14 Aug 2009
    - client: in the final stage of CPU scheduling,
        give preference to multi-threaded jobs.
        Avoid running N-1 1-thread jobs and 1 N-thread job on N CPUs
    - client: change file transfer giveup time from 14 to 90 days

    client/
        cpu_sched.cpp
        pers_file_xfer.h

David  14 Aug 2009
    - client: ATI GPU detection code (from Crunch3r)

    lib/
        coproc.cpp,h
        cal.h

David  14 Aug 2009
    - client: clean up ATI code and make it work (or at least compile)
        under Linux

    lib/
        coproc.cpp,h

David  14 Aug 2009
    - client: ATI tweaks

    lib/
        coproc.cpp,h

David  17 Aug 2009
    - client: add ATI support to job scheduling and work fetch

    client/
        app.cpp
        app_start.cpp
        client_state.cpp,h
        client_type.cpp,h
        cs_scheduler.cpp
        rr_sim.cpp
        work_fetch.cpp,h
    lib/
        coproc.cpp,h

David  17 Aug 2009
    - scheduler: add support for ATI GPUs

    sched/
        handle_request.cpp
        sched_customize.cpp,h
        sched_send.cpp
        sched_types.cpp,h
        sched_version.cpp

David  17 Aug 2009
    - client: fix calculation of ATI flops

    lib/
        coproc.cpp,h

David  17 Aug 2009
    - client/manager: add ATI stuff to GUI RPCs and manager display

    client/
        cs_statefile.cpp
        schedule_op.cpp
    clientgui/
        DltItemProperties.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  18 Aug 2009
    - scheduler: if client request uses a weak authenticator,
        don't modify user preferences or CPID.
    - client: fix bug that shows ATI version incorrectly
    - database: host.posts has been repurposed as a salt (or seqno)
        for a new type of weak authenticator that won't depend on password
    - web code:
        modify forum_preferences.posts instead of host.posts.
        (actually, the former isn't used either, we just do a select count(*);
        should fix this at some point).

    client/
        cpu_sched.cpp
    db/
        boinc_db.h
        schema.sql
    html/
        inc/
            forum.inc
        ops/
            forum_repair.php
    lib/
        coproc.pp
    sched/
        handle_request.cpp
        sched_types.h

David  18 Aug 2009
    - manager: allow 24:00 to be used in advanced prefs dialog
        (from Ian Hay; fixes #357)

    clientgui/
        DlgAdvPreferences.cpp

Charlie 18 Aug 2009
    - Mac SS: Changes for compatibility with OS 10.6 while maintaining 
        OS 10.3.9 compatibility.
        
    clientscr/
        mac_saver_module.cpp
        Mac_Saver_ModuleView.m
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  19 Aug 2009
    - client and scheduler: lay the groundwork for "fractional coproc jobs",
        e.g. the Milkyway@home ATI app, of which we can typically run
        2 or 3 instances at once on a GPU.
        Changes include:
        - In APP_VERSION, don't use a COPROCS to represent the GPU
            requirements; just use doubles ncudas and natis.
        - sufficient_coprocs() etc. are no longer members of COPROCS
        - in HOST_USAGE, ncudas and natis are doubles
        - in scheduler request, req_instances is now a double

        This checkin doesn't include the job scheduling logic,
        i.e. assigning jobs to GPUs.  That will follow.

    client/
        app_start.cpp
        client_types.cpp,h
        cpu_sched.cpp
        cs_scheduler.cpp
        scheduler_op.cpp
    lib/
        coproc.h
    sched/
        sched_customize.cpp
        sched_types.cpp,h

David  19 Aug 2009
    - client: finish the implementation of fractional coproc jobs.
        - different data structure for keeping track of coproc usage;
            instead of COPROC having per-instance pointers to ACTIVE_TASK,
            ACTIVE_TASK now has an array of device number indices
            for each instance that it's using.
        - in enforce_schedule(), we call a new function assign_coprocs()
            that decides what coproc instances each job will use,
            and prunes jobs for which we can't get an assignment.
            This function embodies lots of subtlety.
        - coproc_cmdline() no longer deals with reserving instances;
            it just has to generate the --device X cmdline

    client/
        app.h
        app_start.cpp
        cpu_sched.cpp
    lib/
        coproc.h

David  19 Aug 2009
    - wrapper: compile fix

    samples/wrapper/
        wrapper.cpp

David  19 Aug 2009
    - make_project and upgrade: copy file management programs to proj/bin/

    py/Boinc/
        setup_project.py

Eric K 20 Aug 2009
    - Moved credit.cpp into to the scheduler library
    - Added a separate GPU memory requirement for the CUDA23 plan
    sched/
        Makefile.am
        sched_customize.cpp
        sched_customize.h

Charlie 21 Aug 2009
    - Mac: Add x86_64 screensaver for Snow Leopard OS 10.6.
        Note: OS 10.6 is not yet released, so I am building the x86_64 
        screensaver separately using a beta version of OS 10.6 and its 
        development tools, then merging it into the current build, so 
        this change is to the release script.
    
    mac_installer/
        release_boinc.sh

Rom    21 Aug 2009
    - client: Attempt to prevent a crash via a C++ exception by checking
        for a -1 index before attempting erase the rest of the proxy
        list.
        
    client/
        sysmon_win.cpp

David  21 Aug 2009
    - scheduler: code cleanup

    sched/
        sched*.cpp

David  21 Aug 2009
    - scheduler: simplify and fix the way that app_plan() conveys messages
        to the user.  app_plan() now generates the messages directly
        rather than returning integer error codes.

    sched/
        sched_types.cpp,h
        sched_customize.cpp,h
        sched_send.cpp
        sched_version.cpp

Charlie 21 Aug 2009
    - Mac client: in procinfo_setup(), use rss keyword not rsz in ps command 
        for compatibility with OS 10.6 while keeping OS 10.3.9 compatibility.

    lib/
        procinfo_mac.cpp

David  22 Aug 2009
    - client/libs/samples: remove "#define read _read" etc. from boinc_win.h
        These cause problems when "read" is a member name, etc.
        Do these #defines, conditioned on _MSC_VER,
        in the files that actually need them.
    - don't include boinc_win.h from parse.h.
        principle of minimal inclusion

    api/
        graphics2.cpp
    client/
        app_control.cpp
        app_start.cpp
        cs_cmdline.cpp
        file_names.cpp
        hostinfo_win.cpp
        http_curl.cpp
        log_flags.cpp
        main.cpp
        sim.cpp
        sim_util.cpp
    lib/
        app_ipc.cpp
        boinc_win.h
        cert_sig.cpp
        crypt.cpp
        diagnostics.cpp
        diagnostics_win.cpp
        filesys.cpp
        gui_rpc_client.cpp
        parse.cpp,h
        stackwalker.cpp
        util.cpp
    samples/multi_thread/
        multi_thread.cpp

David  24 Aug 2009
    - update_versions: if app version files already exist in download dir,
        make sure they're the same (i.e., enforce file immutability).
        TODO: do this for input files too
    - client: check return values from CUDA device detection functions

    client/
        main.h
    lib/
        coproc.cpp
    py/Boinc/
        tools.py
    tools/
        update_versions

David  24 Aug 2009
    - add vm_wrapper sample app (from Jarno Rantala, CERN)

    samples/vm_wrapper/
        job.xml
        VMWrapper.py
        setupPyBOINC.py

David  24 Aug 2009
    - client: use the right library name for ATI on Linux
    - client: check return values from ATI device detection functions

    lib/
        coproc.cpp

David  24 Aug 2009
    - client: in parsing <coproc> elements in <app_version>,
        use a new type COPROC_REQ for which the count field is a double.
        Otherwise fractional GPU jobs don't work.

    client/
        client_types.cpp
    lib/
        coproc.cpp,h

David  25 Aug 2009
    - client: when writing XML, entity-encode the following fields:
        FILE_INFO::url
        HOST_INFO::p_vendor, p_model, p_features, os_name, os_version

        The following fields are already entity-encoded:
        PROJECT::user_name, team_name
        APP_INIT_DATA::user_name, team_name
        PROXY_INFO:: user names and passwds

        These are (as far as I know) the only fields that can
        contain special chars.
        This is now documented in:
        http://boinc.berkeley.edu/trac/wiki/XmlNotes
    - client: XML_PARSER::parse_str() now does xml_unescape(),
        same as ::parse_str().

    client/
        client_types.cpp
    lib/
        hostinfo.cpp
        parse.cpp

Charlie 26 Aug 2009
    - MGR: on Linux, check list of running processes from procinfo_setup() 
        to determine if BOINC core client is running.
    - MGR: on Linux, accept 2 optional arguments:
          "--clientdir=<dir>" or "-e <dir>" for directory containing client executable, 
            default is the directory containing the manager executable.
          "--datadir=<dir>" or "-d <dir>" for BOINC data directory, default is the 
            directory containing the client executable.
          These are used by the manager when launching the client.

    clientgui/
        BOINCClientManager.cpp
        BOINCGUIApp.cpp,.h

David  26 Aug 2009
    - scheduler: fix CUDA RAM warning msg

    client/
        log_flags.h
    sched/
        sched_customize.cpp,h

David  26 Aug 2009
    - scheduler: if request is anon platform,
        write list of client's app versions to log

    sched/
        sched_types.cpp,h
        sched_send.cpp

Charlie 26 Aug 2009
    - MGR: Bug fixes for Linux.

    clientgui/
        AsyncRPC.cpp
        BOINCBaseView.cpp
        BOINCClientManager.cpp
        MainDocument.cpp,.h
        sg_DlgMessages.cpp
        ViewMessages.cpp

David  28 Aug 2009
    - reverted changes to PROXY_INFO which broke various things

    client/
        http_curl.cpp,h
        client_state.cpp
        net_stats.cpp
        cs_cmdline.cpp
    lib/
        proxy_info.cpp,h

David  28 Aug 2009
    - add "appmgr" script for managing apps and versions (from Gabor Gombas)

    doc/manpages/
        appmgr.xml
        Makefile.xm
    py/Boinc/
        setup_project.py
    tools/
        appmgr (new)
        pymw_setup (removed)

David  28 Aug 2009
    - client: fix work fetch log message for ATI GPU

    client/
        work_fetch.cpp

David  28 Aug 2009
    - client: NVIDIA offers an API which tells you whether a GPU
        is running a graphics application.
        Change the semantics of the "don't use GPU while computer in use" pref
        to "don't use a GPU that's running a graphics app while
        computer is in use".
        This will increase GPU utilization on multi-GPU systems.

    client/
        client_state.cpp
        cpu_sched.cpp
    sched/
        file_deleter.cpp
    lib/
        coproc.cpp,h

David  29 Aug 2009
    - client: various bug fixes in job scheduling and work fetch for ATI.
        From Crunch3r.

    client/
        cpu_sched.cpp
        gui_rpc_server_ops.cpp

David  30 Aug 2009
    - client:  if project is anonymous platform, set the overall work req
        to the max of the requests for different resource types.
        Otherwise projects with old schedulers won't send us work.

    client/
        cs_scheduler.cpp
        work_fetch.cpp,h

David  31 Aug 2009
    - scheduler: fix messed-up deadline check logic.
        Old:
            1) check deadline based on wu.delay_bound
            2) in add_result_to_reply(), potentially modify wu.delay_bound,
                e.g. because of retry acceleration
            problem: reducing delay bound may cause deadline miss
        New:
            1) new function get_delay_bound_range()
                (called from wu_is_infeasible_fast())
                returns optimistic and pessimistic delay bounds.
                Retry acceleration logic is here.
            2) check deadline based on optimistic bound;
                if that fails, check based on pessimistic bound.
                Set wu.delay_bound to the one that worked.
        Notes:
        - get_delay_bound_range() needs result priority and report deadline,
            and it's called before we read the full result.
            So add these items to WORK_ITEM and WU_RESULT.
        - get_delay_bound_range() could be customized for
            project-specific deadline policy.
        - add_result_to_reply() was becoming a toxic waste dump.
            Deadline-related stuff should have been factored out in any case.

    db/
        boinc_db.cpp,h
    sched/
        feeder.cpp
        sched_array.cpp
        sched_customize.cpp
        sched_locality.cpp
        sched_send.cpp,h
        sched_shmem.h
        wu_check.cpp

Eric K    31 Aug 2009
    - Fixed problem that prevented backtrace from being printed after many
          types of signal.

    lib/
       diagnostics.cpp

Charlie 31 Aug 2009
    - Mac installer: add logic for setting BOINC as screensaver under OS 10.6.
    
    mac_installer/
        PostInstall.cpp

Rom    1 Sept 2009
    - client: autoproxy detection should happen at startup too.
    - client: when autoproxy detection is in progress don't attempt to use
        old values
    - client: user defined proxies should take precedence over automatically
        detected ones.
    - lib: Re-implement the assignment operator for proxy_info, http_curl.cpp
        uses it to clone the proxy information for each http op.  See set_proxy();

    client/
        client_state.cpp
        http_curl.cpp
        net_stats.cpp
    lib/
        proxy_info.cpp, .h

David  1 Sept 2009
    - client:
        - remove HTTP_OP::pi; just use gstate.proxy_info
        - remove HTTP_OP::set_proxy()
        - remove PROXY_INFO::operator=; struct assignment works

    client/
        http_curl.cpp,h
        gui_http.cpp
        pers_file_xfer.cpp
        scheduler_op.cpp
    lib/
        proxy_info.cpp,h

Rom    1 Sept 2009
    - client: Use HTTP_OP::pi to avoid a crash when using a proxy. libcurl uses
        the proxy information after the PROXY_INFO struct in setup_proxy_session()
        had been popped off the stack.
        
    client/
        http_curl.cpp,h

Charlie 1 Sept 2009
    - Mac Sandbox: Security fixes for Mac OS 10.6 Snow Leopard.
        Mac OS 10.6 requires administrator authorization to run setgid 
        applications if they use the AppKit (Cocoa) framework.  The Mac 
        installer adds all users with admin privileges (members of group 
        admin) to group boinc_master.  Since the Manager doesn't need to 
        run setgid boinc_master if the user is a member of that group, 
        we eliminate the setgid.
        This means that non-admin users will be able to run the Manager 
        only if the sysadmin adds them to group boinc_master, so we now 
        create a login item or set the screensaver only for those users 
        who are members of group boinc_master.
        If a user who is not a member of that group runs the Manager, it 
        displays an alert saying that in order to administer BOINC, he 
        needs to ask the sysadmin to add him to group boinc_master.
    
    client/
        check_security.cpp
    clientgui/
        BOINCGUIApp.cpp
        mac/
            SetupSecurity.cpp
    mac_build/
        Mac_SA_Insecure.sh
        Mac_SA_Secure.sh
    mac_installer/
        PostInstall.cpp

David  2 Sept 2009
    - scheduler: put client version in host.serialnum
    - web: parse serialnum correctly

    html/inc/
        host.inc
    sched/
        handle_request.cpp

David  2 Sept 2009
    - client: fix to [18945]; we only want to max the overall request
        with a GPU request if project is anonymous platform
        AND it has an app for that GPU type
    - client: report overall work request as well as per-resource-type requests

    client/
        cs_scheduler.cpp
        work_fetch.cpp,h

David  2 Sept 2009
    - client: add <sched_op_debug> msg for ATI work request

    client/
        scheduler_op.cpp

Rom    2 Sept 2009
    - WIN: Remove unused references to glaux.h and glaux.lib
    
    api/
        boinc_gl.h
    win_build/
        *.vcproj

David  2 Sept 2009
    - client: fix crashing bug in proxy autodetect

    client/
        sysmon_win.cpp

David  2 Sept 2009
    - client: fix log messages about scheduler RPC work req
    - client: missing reset for ATI debt accounting

    client/
        client_state.cpp
        cpu_sched.cpp
        scheduler_op.cpp

David  2 Sept 2009
    - client: fix bug where client runs too many CPU jobs

    client/
        cpu_sched.cpp

David  3 Sept 2009
    - scheduler and back end: add new fields to result table:
        elapsed_time: the elapsed time (runtime) as reported by client
        flops_estimate: the app's estimated FLOPS as reported by app_plan()
        app_version_id: the DB ID of the app_version used
            (or -1 if anonymous platform)
        TODO: show these in the web interfaces,
        and use them where appropriate

    db/
        boinc_db.cpp,h
        schema.sql
    html/ops/
        db_update.php
    sched/
        sched_result.cpp
        sched_send.cpp
        sched_types.cpp

David  3 Sept 2009
    - client: improve the estimation of "busy time" (see 17 July checkin).
        If you have 2 CPUs and a 1-day job in EDF mode,
        the busy time should be zero, not .5 days.

        Add a class BUSY_TIME_ESTIMATOR that makes a somewhat better
        (though still fairly crude) estimate.

    client/
        cs_scheduler.cpp
        work_fetch.cpp,h

David  5 Sept 2009
    - client: in choosing GPU jobs in FIFO order,
        use job name as tiebreaker if received times are the same.
        This makes the order deterministic.
    - web: show elapsed time and CPU time,
        and show app version info, in result display

    client/
        cpu_sched.cpp
    html/inc/
        result.inc

David  5 Sept 2009
    - client: update of time stats was broken by [17166]

    client/
        time_stats.cpp

David  5 Sept 2009
    - web: remove usage of ereg_replace()
        Fixes #787.  From Nicolas Alvarez.

    html/
        inc/
            util.inc
        user/
            team_edit_form.php

David  7 Sept 2009
    - make_project: create html/ops/.htaccess;
        secure admin web access by default

    tools/
        make_project

David  8 Sept 2009
    - client: add code for faking ATI GPUs

    client/
        client_state.cpp
        work_fetch.cpp
    lib/
        coproc.cpp,h

David  8 Sept 2009
    - client: cap time_stats dt at 2 weeks,
        so people upgrading to 6.10 won't get big drop in on_frac.

    client/
        time_stats.cpp

David  8 Sept 2009
    - client: fix bug in RR simulation:
        start only enough jobs to fill CPUs per project,
        not all the CPU jobs at once.
        I'm not sure how much difference this makes,
        but this is how it's supposed to work.
    - client: if app_info.xml doesn't specify flops,
        use an estimate that takes GPUs into account.
    - client: if it's been more than 2 weeks since time stats update,
        don't decay on_frac at all.

    client/
        client_state.cpp
        rr_sim.cpp
        time_stats.cpp
        work_fetch.cpp
    lib/
        coproc.cpp,h

David  10 Sept 2009
    - client: try to save space in req msg.  Didn't make much difference.

    client/
        cs_scheduler.cpp

David  10 Sept 2009
    - web: show BOINC version in host displays

    client/
        makefile.sim
    html/
        inc/
            host.inc
        user/
            hosts_user.php
    sched/
        sched_customize.cpp

David  10 Sept 2009
    - file deleter: fix bug where it retries errors infinitely;
        also fix bug where non-existence of hierarchy dir
        is treated as a recoverable error

    sched/
        file_deleter.cpp

Charlie 10 Sept 2009
    - client: don't display processor cache if we don't know it.
    - client: skip ATI detection stuff and error messages on Macs because 
        ATI doesn't yet have a CAL library for Mac.

    client/
        client_state.cpp
    lib/
        coproc.cpp

David  11 Sept 2009
    - client: in startup msgs, show resource shares, don't show prefs details

    client/
        client_state.cpp

Charlie 11 Sept 2009
    - Mgr: skip exit confirmation dialog if user pressed emergency Exit button 
        on AsyncRPCDlg.

    clientgui/
        AsyncRPC.cpp
        BOINCGUIApp.cpp

David  12 Sept 2009
    - client: fix bug in FIFO selection of coproc jobs
        (senility setting in?)

    client/
        cpu_sched.cpp

David  12 Sept 2009
    - client: add <fraction_done> to boinc_task_state.xml

    client/
        app_control.cpp

David  13 Sept 2009
    - client: change order in poll loop so that:
        1) job finishes
        2) job gets marked as "ready to report"
        3) scheduler RPC is initiated
        Hopefully this won't have an unintended side-effect

    client/
        client_state.cpp

David  14 Sept 2009
    - admin web: add a notion of login to a project's admin pages
        (this is separate from login to user pages,
        since the cookie path is different).
    - admin web: added a framework for project-specified
        access control to admin pages.
        Can be on the basis of user ID, user flags, etc.
        To do this, define functions auth_ops() and auth_ops_cmdline()
        in html/project/project.inc
        (see the one in project.samples/ for an example)
        This is in addition to .htaccess protection.

    html/
        inc/
            util.inc
            util_ops.inc
        project.sample/
            project.inc
        ops/
            assign.php
            analyze_coproc_log
            login_action.php
            login_form.php (new)
            logout.php (new)

David  15 Sept 2009
    - admin web: finished the above.
        Got rid of auth_ops_cmdline() (not needed).
        auth_ops() is now called in util_ops.inc;
        every script in html/ops/ must include util_ops.inc.

    Note: for existing projects, the admin web interface
        will now show "access denied".
        Projects must think about what access control policy they want,
        and specify it in project.inc

    html/
        inc/
            ops.inc (removed)
            util_ops.inc
        project.sample/
            project.inc
        ops/
            (most).php

David  15 Sept 2009
    - create_work function and script:
        check for valid ordering among max_success_results,
        max_total_results, max_error_results, and target_nresults

    db/
        boinc_db.h
    sched/
        validator.cpp
    tools/
        backend_lib.cpp
        create_work.cpp

David  15 Sept 2009
    - transitioner: don't create more than max_total_results results

    sched/
        transitioner.cpp

Charlie 16 Sept 2009
    - Mac installer: ask user whether to allow non-administrative users to run 
        and control BOINC.
        
    clientgui/
        mac/
            SetupSecurity.cpp,.h
    mac_installer/
        PostInstall.cpp

David  16 Sept 2009
    - client: tweak policy for device busy time.
        Should eliminate some spurious "job won't complete by deadline" msgs.

    client/
        work_fetch.h

David  16 Sept 2009
    - client and scheduler RPC: add optional <cpu_backoff>, <cuda_backoff>,
        and <ati_backoff> elements to scheduler reply.
        These specify backoffs for the resource types,
        overriding the existing backoff mechanism.
        Projects can supply these if they don't have apps of a particular type
        and don't want to get periodic requests for them.

    client/
        cs_scheduler.cpp
        schedule_op.cpp,h
        work_fetch.cpp,h
    lib/
        coproc.cpp

David  16 Sept 2009
    - client: cap project-supplied backoffs at 28 days
    - client: anal-retentive alphabetization

    client/
        log_flags.cpp,h
        scheduler_op.cpp

Charlie 17 Sept 2009
    - Mac installer: create a new command-line tool AddRemoveUser to add users 
        to or remove users from group boinc_master.  It also adjusts the users' 
        login item and screensaver selection.  Updated ReadMe file to explain 
        changes for Unicode and for OS 10.6 Snow Leopard.
        
    mac_installer/
        AddRemoveUser.cpp
        ReadMe.rtf
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  17 Sept 2009
    - client: if project-supplied backoff > 28 days, cap rather than ignore

    client/
        scheduler_op.cpp

David  17 Sept 2009
    - server programs: add --help and --version cmdline options to all.
        From Nils Chr. Brause.

    Makefile.am
    generate_svn_version.sh
    sched/
        (most).cpp

David  17 Sept 2009
    - client: don't print error message if output file with <copy_file>
        attribute is missing.  That's the app's problem, not BOINC's
    - sample assimilator: if a canonical instance has no output files,
        rather than quitting create a file named WU_NAME_no_output_files

    client/
        app_start.cpp
    sched/
        sample_assimilator.cpp

David  17 Sept 2009
    - scheduler: add comments in sched_customize.cpp to say that
        wu_is_infeasible_custom() can assign the resource usage
        and/or FLOPS estimate for a particular host.

    sched/
        sched_customize.cpp

Charlie 17 Sept 2009
    - client: fix compiler warning.

    client/
        app_start.cpp

David  17 Sept 2009
    - client: fixed failure to initialize CPU backoff;
        leads to huge CPU backoff.
        Cap backoff when read statefile.

    client/
        client_types.cpp
        scheduler_op.cpp

David  17 Sept 2009
    - client: oops, backoff time is absolute not relative

    client/
        client_types.cpp

David  18 Sept 2009
    - transitioner: fix to 15 Sept checkin

    sched/
        transitioner.cpp

David  18 Sept 2009
    - client/API: add autosetup proxy info to init_data.xml

    client/
        http_curl.cpp
        sysmon_win.cpp
    lib/
        proxy_info.cpp,h

David  18 Sept 2009
    - client: in choosing coproc jobs to run (FIFO) give priority
        to whether job is already running.
        This addresses a bug where several jobs are returned by sched RPC,
        and one with a lexicographically greater name
        happens to finish downloading first.

    client/
        cpu_sched.cpp

David  18 Sept 2009
    - client: comment out [18942], which changed the meaning of
        "don't use GPUs while computer is in use" to
        "don't use GPUs running graphics apps while computer is in use"
        for NVIDIA GPUs.
        NVIDIA's API for seeing if a GPU is running a graphics app
        doesn't seem to reflect GPU use by the OS.

    client/
        client_state.cpp
        cpu_sched.cpp

David  18 Sept 2009
    - Unix build: use autoreconf

    _autosetup
    configure.ac

    removed:
    depcomp
    ltmain.sh
    compile
    config.guess
    config.sub
    missing
    m4/libtool.m4

David  18 Sept 2009
    - client: fix bug introduced in [19035] that causes wrong nidle instances
        (and resulting work fetch problems)
    - Unix build: don't touch svn_version.sh if it hasn't changed,
        to avoid remake of sched/ (from Gabor Gombas)

    generate_svn_version.sh
    client/
        rr_sim.cpp

David  18 Sept 2009
    - client: don't print error msg if file is wrong size on startup

    client/
        cs_files.cpp
        work_fetch.cpp

David  18 Sept 2009
    - client: if a file fails verification, delete it.

    client/
        pers_file_xfer.cpp

David  18 Sept 2009
    - Unix build: delete some unused files

    removed:
    export-tarball
    mkinstalldirs
    fix-repository-20040202
    nightly-tarball
    install-sh

David  21 Sept 2009
    - Unix build fix

    configure.ac

David  21 Sept 2009
    - scheduler: don't scale by #CPUs for non-CPU-intensive projects

    sched/
        sched_send.cpp

David  21 Sept 2009
    - client: if we're doing a scheduler RPC because of user request,
        ask for work for all devices with shortfall.
        Avoid situation where there's an idle GPU and CPU,
        we're contacting a project with no GPU apps,
        and we ask it only for GPU jobs.

    client/
        work_fetch.cpp

David  21 Sept 2009
    - client: tweak CPU scheduling policy to avoid running
        multithread apps overcommitted.
        Actually: allow overcommitment but only a fractional CPU
        (so that, e.g., we can run a GPU app and a 4-CPU app on a 4-CPU host)
        
    client/
        cpu_sched.cpp

David  22 Sept 2009
    - client: fix bug that caused unstarted coproc jobs to preempt
        ones already running.
        The problem: we considered a job as started if it has an ACTIVE_TASK.
        However, we were creating ACTIVE_TASKS for jobs before deciding
        to run them, because we needed a place to store the coproc reservations.
        This caused the above bug, and also had the undesirable effect
        of creating slot directories before they're needed.

        Solution: store coprocessor reservations in RESULT
        rather than ACTIVE_TASK.

    client/
        app.h
        app_start.cpp
        client_types.h
        cpu_sched.cpp

David  22 Sept 2009
    - client: extra debug msgs (remove when done)
    client/
        cpu_sched.cpp

David  22 Sept 2009
    - client: fix preemption bug, this time fer sure!

    client/
        cpu_sched.cpp

David  23 Sept 2009
    - client: removed extra msgs

    client/
        cpu_sched.cpp

David  23 Sept 2009
    - client: on Linux, run CPU-intensive jobs with the SCHED_BATCH scheduler.
        Improves interactive response of system when jobs running.
        From Clive Messer.

    configure.ac

    client/
        app_start.cpp

David  23 Sept 2009
    - Unix builds: make sure we have libtoolize
        From Gabor Gombas

    _autosetup

David  23 Sept 2009
    - client: revert [19110]: don't delete files that fail verification;
        they might be partly downloaded.

    client/
        pers_file_xfer.cpp

David  23 Sept 2009
    - scheduler: add a plan class "ati13186" for apps that require
        CAL version 1.3.186 or greater.

    sched/
        sched_customize.cpp

David  23 Sept 2009
    - scheduler: change it to:
        "ati" means CAL 1.2 or less (Catalyst 9.1 or less)
        "ati13" means CAL 1.3 or greater (Catalyst 9.2+)

    sched/
        sched_customize.cpp

Rom    23 Sept 2009
    - scheduler: bug fix.
    
    sched/
        sched_customize.cpp

David  24 Sept 2009
    - client: in GPU enumeration, separate warning msgs from GPU descriptions.
        Show warning msgs only if log_flags.coproc_debug

    client/
        client_state.cpp
        log_flags.h
    lib/
        coproc.cpp,h

David  24 Sept 2009
    - client: for ATI enumeration, use only aticalrt.dll
        (amdcalrt.dll is old version w/ funky DLL names)
    - client: make GPU enumeration warnings more consistent
        (e.g., "NVIDIA" instead of "CUDA").
    - scheduler: get rid of ati13 plan class.
        Require 1.4+ driver for plan class ati.

    sched/
        sched_customize.cpp
    lib/
        coproc.cpp

David  24 Sept 2009
    - wrapper: add a mechanism so that sub-tasks can report fraction done.
        Write your apps so that they periodically write their
        fraction done (0..1) to a file.
        Then include <fraction_done_filename> in the job description.

    samples/wrapper/
        wrapper.cpp

Oliver 25 Sept 2009
    - ipc: write and parse APP_INIT_DATA "hostid"

    lib/
        app_ipc.cpp

Rom    25 Sept 2009
    - client: Add support for checking for both amd* prefixed CAL libraries
        and ati* prefixed CAL libraries.
    - scheduler: redefine ati class plans again.
        ati: CAL 1.0+, amd* prefixed libraries
        ati13amd: CAL 1.3+, amd* prefixed libraries
        ati13ati: CAL 1.3+, ati* prefixed libraries
        ati14: CAL 1.4+, ati* prefixed libraries

    sched/
        sched_customize.cpp
    lib/
        coproc.cpp, .h

Rom    25 Sept 2009
    - lib: fix build break.
    
    lib/
        coproc.cpp

David  25 Sept 2009
    - scheduler: fix app_plan() bug, improve ATI-related msgs

    lib/
        coproc.cpp
    sched/
        sched_customize.cpp

David  25 Sept 2009
    - client: improve ATI description strings (from Andreas)

    lib/
        coproc.cpp

David  25 Sept 2009
    - user web: remove "enforced by version X+" for X < 6.0
    - screensaver: added some comments

    clientscr/
        screensaver.cpp
        ss_app.cpp
    html/inc/
        prefs.inc

Rom    25 Sept 2009
    - scheduler: setup priorites for the ATI plan classes
    
    sched/
        sched_customize.cpp

Rom    25 Sept 2009
    - client: report the different Windows 7 and Windows 2008
        "R2" correctly.
        
    client/
        hostinfo_win.cpp

David  25 Sept 2009
    - scheduler: improve msgs if user has wrong ATI DLL names

    sched/
        sched_customize.cpp

David  25 Sept 2009
    - scheduler: fix app_plan_uses_gpu()

    sched/
        sched_customize.cpp

Rom    25 Sept 2009
    - win_build: In the future be very careful about with project
        you choose to be the basis for a new executable.
        boincsvcctrl.exe was overwriting the PDB file for boinc.exe
        which causes all call stack handling code for boinc.exe
        to stop working.
        
    win_build/
        boincsvcctrl.vcproj

David  25 Sept 2009
    - admin web: show plan class in "manage app versions" page
        from Jon Sonntag.

    html/ops/
        manage_app_versions.php

David  25 Sept 2009
    - client: fix crashing bug in GPU message display
    - client: show a couple more config flags on startup

    client/
        client_state.cpp
        log_flags.cpp

David  26 Sept 2009
    - client: fix bug in CPU prefs enforcement:
        enforce "suspend if no recent input" and "exclusive apps"
        only if overall mode is RUN_MODE_AUTO (run according to prefs) 

    client/
        cs_prefs.cpp

David  27 Sept 2009
    - client/scheduler/web: add per-project preferences for whether
        to accept CPU, NVIDIA and ATI jobs.
        These prefs are shown only where relevant:
        e.g., only for processor types for which the project has app versions,
        and if it has versions for only one type, no pref is shown.

        These prefs affect both client and scheduler.
        The client won't ask for work for a device blocked by prefs,
        and the scheduler won't send it.

        This replaces earlier optional project-specific prefs for
        "no CPU jobs" and "no GPU jobs".
        (However, these prefs continue to be honored on the server side).

    - client: if NVIDIA driver is unknown, say that rather than 0

    client/
        client_state.cpp
        client_types.cpp,h
        cs_account.cpp
        work_fetch.cpp,h
    html/
        inc/
            db_conn.inc
            prefs.inc
            text_transform.inc
            translation.inc
            util.inc
        project.sample/
            project_specific_prefs.inc
        user/
            prefs_remove.php
    lib/
        coproc.cpp
    sched/
        sched_send.cpp
        sched_types.h
        sched_version.cpp

Rom    28 Sept 2009
    - client: add missing Windows SKUs.
        From Robert Kreß
    
    client/
        hostinfo_win.cpp

David  28 Sept 2009
    - tweak to start
    html/inc/
        user.inc
    sched/
        start

David  28 Sept 2009
    - client: fix crash with <ncpus>0</ncpus>

    client/
        work_fetch.h

Rom    29 Sept 2009
    - client: fix bug in coproc summary string.
    
    lib/
        coproc.cpp

David  29 Sept 2009
    - user web: show ATI GPUs correctly; show multiple GPUs correctly.

    html/inc/
        host.inc

David  29 Sept 2009
    - user web: forum_preferences.{low_rating_threshold, high_rating_threshold}
        were deprecated, but were still used in deciding whether to show a post.
        This broke the "ignore list" function.

    db/
        schema.sql
    html/
        inc/
            forum.inc
        user/
            forum_forum.php
            edit_forum_preferences_action.php

David  30 Sept 2009
    - client: if downloaded project list file is garbage, ignore it.
    - all: accept <foo /> as an XML bool

    client/
        acct_setup.cpp
    lib/
        parse.cpp

Rom    30 Sept 2009
    - client: Apparently it is valid for the autoproxy to return
        successful API completeion but a null proxy list.  Check
        for the null instead of crashing.
        
    client/
        sysmon_win.cpp

Rom    1 Oct 2009
    - client: only support one of the ati13* plan classes at a time.
        A couple users had not updated their amdcal* runtime libraries
        after upgrading catalyst drivers.  This was leading to crashes
        of the project applications when work was supplied looking
        for the old DLL names.
        
    lib/
        coproc.cpp

Rom    1 Oct 2009
    - client: fix a handle leak I just introduced.
        (From: Andreas a.k.a Gipsel)
        
    lib/
        coproc.cpp

Rom    1 Oct 2009
    - lib: Fix memory/resource leak.
        (From Nicolás Alvarez)
        
    lib/
        shmem.cpp

Rom    1 Oct 2009
    - lib: Add additional ATI descriptions.
    - lib: Fix some inaccurate ATI capabilities in certain cards.
        (From: Andreas a.k.a Gipsel)
        
    lib/
        coproc.cpp

Rom    1 Oct 2009
    - lib: Fix memory/resource leak.
        (From Nicolás Alvarez)
        
    lib/
        shmem.cpp

David  2 Oct 2009
    - admin web: changed protection scheme as follows:
        - default: script can be run from command line;
            to run from web you need to be logged in as a particular user.
            (in addition to .htaccess protection).
        - if include $cli_only at start of script:
            can only be run from the command line.
        - if include $skip_auth_ops at start of script:
            can run from web without being logged in
            (this is set ONLY in login_action.php)
    - admin web: added $cli_only = true to a bunch of scripts

    html/
        inc/
            util_ops.inc
        ops/
            (most).php

David  2 Oct 2009
    - wrapper: fix fraction done feature

    samples/wrapper/
        wrapper.cpp

David  2 Oct 2009
    - client: restore calDeviceGetInfo(), add its info to COPROC_ATI struct
        (some plan class might need to know this).
        Code cleanup.

    lib/
        Makefile.am
        coproc.cpp,h

David  2 Oct 2009
    - client: better behavior if a GPU goes away:
        1) if an APP_VERSION is missing a coprocessor,
            don't delete it and its files.
            (If the coprocessor returns, we won't need to re-download)
        2) if a RESULT uses an app version that is missing a coprocessor,
            abort it (rather than deleting it).
            The client will report the result on the next scheduler RPC,
            and the server will make a new instance.

    client/
        client_types.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
    lib/
        error_numbers.h

David  2 Oct 2009
    - client: fix bug where if you change project "no CPU/NVIDIA/ATI"
        prefs and update, the change wouldn't take effect until client restart.
    - client: fix bug in enforcement of "no CPU/NVIDIA/ATI" prefs

    client/
        client_state.cpp
        cs_account.cpp
        work_fetch.cpp
    lib/
        coproc.cpp

David  2 Oct 2009
    - client: if GPU is removed while jobs in progress,
        don't show messages as internal errors.

    client/
        app.cpp
        cs_statefile.cpp

David  2 Oct 2009
    - client: make the order of the result vector
        consistent with the order used to select coproc jobs

    client
        client_state.h
        cs_scheduler.cpp
        cs_statefile.cpp
        cpu_sched.cpp

David  3 Oct 2009
    - client: improve coproc_debug messages

    client/
        app_start.cpp
        cpu_sched.cpp

David  3 Oct 2009
    - client: if a task is running, uses a GPU, and the system has >1 GPU,
        append text to its resource string saying which GPU it's using
    - manager: tweak Task properties text

    client/
        client_types.cpp,h
    clientgui/
        DlgItemProperties.cpp

Rom    5 Oct 2009
    - DIAG: Suspend threads right before extracting their context and then
        resume them afterwords.  Otherwise we could end up in a deadlock state
        where both the main thread and a support thread are attempting to use
        the same system resource and the thread that owns the resource becomes
        suspended. In the last situation it was way down in Winsock.
        
    lib/
        diagnostics_win.cpp

Rom    5 Oct 2009
    - DIAG: Don't resume after the thread has been suspended, otherwise the
        thread stack may be trashed after extracting the context.  This should
        still be okay though as by the time the diagnostics framework
        has gotten here it has already downloaded all the symbols it'll need.

    lib/
        diagnostics_win.cpp

Rom    5 Oct 2009
    - client: Fix crash that was introduced 7 months ago.
        (From Nicolás Alvarez)
        
    client/
        app_control.cpp

David  6 Oct 2009
    - client: remove redundant 0s in job log
    - user web: remove some PHP warnings (from Oliver Bock)

    client/
        client_types.cpp
    html/
        inc/
            prefs.inc
        user/
            add_venue.cpp
            forum_thread.cpp
            prefs_edit.cpp

David  6 Oct 2009
    - scheduler: skip deadline check for non-CPU-intensive projects

    sched/
        sched_send.cpp

David  7 Oct 2009
    - client: add --unsigned_apps_ok cmdline option
        and <unsigned_apps_ok> config option.
        This tells the client to allow unsigned apps.
        For testing.
        No file xfers or other network traffic will be allowed if set.
    - client: add <exit_after_finish> option (same as cmdline flag)
    - client: add <skip_cpu_benchmarks> option (same as cmdline flag)
    - client: print message if abort past-deadline unstarted job
    - client: improve message when have NVIDIA drivers but no GPU
        
    client/
        app_start.cpp
        client_state.cpp,h
        cs_cmdline.cpp
        cs_prefs.cpp
        log_flags.cpp
    lib/
        coproc.cpp
    samples/
        client_state_save.xml (new)

Rom    7 Oct 2009
    - MGR: Fix the Statistics page Save/Restore project display feature.
    - MGR: Clean up warnings
        
    clientgui/
        ViewStatistics.cpp

Rom    7 Oct 2009
    - MGR: Some house keeping.
    
    clientgui/
        ViewMessagesGrid.cpp, .h (deleted)
        ViewProjectsGrid.cpp, .h (deleted)
        ViewTransfersGrid.cpp, .h (deleted)
        ViewWorkGrid.cpp, .h (deleted)

Bernd    7 Oct 2009
    - lib: some changes to help building the WIN32 library with MinGW/gcc
        enable by defining MINGW_WIN32 macro, nothing should change if
        this is not set
    
    lib/
        boinc_win.h
        diagnostics.h
        filesys.cpp

David  7 Oct 2009
    - client: if anonymous platform description (app_info.xml)
        doesn't specify FLOPS for a GPU app,
        assume that it runs at CPU peak speed rather than GPU peak speed.
        Better to be conservative, otherwise job might be aborted
        due to time limit exceeded.

    client/
        client_state.cpp

Charlie 7 Oct 2009
    - MGR: If aborting multiple tasks, ask "Are you sure?" only once.
    
    clientgui/
        ViewWork.cpp

David  12 Oct 2009
    - client: on startup, if a coproc needed by a job is missing,
        set a "coproc_missing" flag rather than aborting the job.
        If use removes a GPU board while there's a large queue of GPU jobs,
        they'll stay queued (until their deadline passes).

        Note: this doesn't fix the situation where user connects via
        Remote Desktop while GPU jobs are running or queued.
        We should check for Remote Desktop every minute or so, and stop GPU jobs.

    client/
        client_state.cpp
        client_types.cpp,h
        cs_statefile.cpp
        work_fetch.cpp
    clientgui/
        ViewWork.cpp
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  12 Oct 2009
    - scheduler/file upload handler: ignore zero-length cmdline args.
        Apparently some Apaches pass them.
        From Nils Brause.

    sched/
        file_upload_handler.cpp
        sched_main.cpp

David  12 Oct 2009
    - client: the get_all_projects_list() RPC doesn't require auth

    client/
        gui_rpc_server_ops.cpp

David  12 Oct 2009
    - added code for Linux mouse check

    lib/
        x_util.cpp

David  12 Oct 2009
    - client: don't multiply checkpoint interval (i.e., "disk interval" pref)
        by # processors.
    - web: change description of pref to
        "Applications checkpoint to disk at most every ..."

    client/
        app_start.cpp
    html/inc/
        prefs.inc

David  12 Oct 2009
    - actually, make it
        "Tasks checkpoint to disk at most every ..."
        and change it in the advanced prefs dialog too

    clientgui/
        DlgAdvPreferencesBase.cpp
    html/inc/
        prefs.inc

David  13 Oct 2009
    - scheduler: improve efficiency of a locality sched query

    sched/
        sched_locality.cpp

Rom    13 Oct 2009
    - LIB: Make the is_remote_desktop compilable for all VS versions
        and SKUs.
        
    lib/
        win_util.cpp, .h

Rom    13 Oct 2009
    - DOC: Update manager_links.php so that it'll compare by numerical
        values instead of using string based comparison.
        
    doc/
        manager_links.php

Rom    14 Oct 2009
    - MGR: Fix initial first connection problem on startup.  I'm not sure why
        it was only happening at startup, there might have been a few crashes
        because of this issue as well.  The basic problem is that wxWidgets
        had an exception handler around the initial frame creation and when
        the first GUI RPC was issues to detect whether or not we were atached
        to an account manager during menu creation the GUI thread would go
        about doing idle processing while waiting for the GUI RPC thread to
        initialize.  During this time the frame pointer is NULL and was getting
        dereferenced which would halt window construction and stay there until
        some other event was fired.
    - MGR: Initial dose of code cleanup and shuffling.  Order the menu functions
        in the order in which they are displayed in the menu.

    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.cpp
        BOINCBaseView.cpp
        Events.h
        ProjectListCtrl.cpp
        sg_BoincSimpleGUI.cpp, .h
        sg_ProjectsComponent.cpp, .h
        WizardAttachProject.cpp

David  14 Oct 2009
    - client: address the situation where GPUs become unusable
        for certain periods (e.g. when Remote Desktop is used on Win).
        - add is_usable() member function to COPROC.
            Currently this just calls the respective (CUDA or CAL)
            initialization function.
            We need to check whether this works and/or causes problems.
        - in enforce_schedule(), check whether usability has changed
            for each GPU type.
            If we've gone from usable to unusable,
            flag all jobs for that GPU as coproc_missing
            (so they won't get run, and will quit if they're running).
            If we've gone from unusable to usable, clear the flag.
        This should deal with all cases except where
        the client is started up with GPUs unusable.
    - scheduler: more query optimizations for locality scheduling
        (from Oliver Bock)

    client/
        cpu_sched.cpp
    lib/
        coproc.cpp,h
    sched/
        sched_locality.cpp

David  14 Oct 2009
    - client: bug fixes to the above.
        Don't fetch work for an unable resource.

    client/
        cpu_sched.cpp
        cs_scheduler.cpp
        work_fetch.cpp

David  14 Oct 2009
    - update cal.h to current ATI code

    lib/
        coproc.cpp,h

David  14 Oct 2009
    - undo the above

David  15 Oct 2009
    - client/scheduler: standardize the FLOPS estimate between NVIDIA and ATI.
        Make them both peak FLOPS,
        according to the formula supplied by the manufacturer.

        The impact on the client is minor:
        - the startup message describing the GPU
        - the weight of the resource type in computing long-term debt

        On the server, I changed the example app_plan() function
        to assume that app FLOPS is 20% of peak FLOPS
        (that's about what it is for SETI@home)

    client/
        client_state.cpp
        work_fetch.cpp
    lib/
        coproc.cpp,h
    sched/
        sched_customize.cpp

David  15 Oct 2009
    - client: the weight of GPU debt in computing total debt should be
        (estimated throughput of all GPUs)/(estimated throughput of all CPUs)
        rather than the ratio of 1 GPU to 1 CPU.
        This change will hopefully cause ratios of granted credit
        to more closely match resource shares.

    client
        work_fetch.cpp,h

David  15 Oct 2009
    - client: multi-thread jobs were being given too high priority;
        in particular, they were preempting jobs in the middle of time slice.
        Solution:
        1) don't use MT in the sort order defined by more_important().
        2) add a 2nd reordering in which MT jobs are moved ahead
            of non-MT jobs, but only if #CPUs used is < #CPUs
            (see promote_multi_thread_jobs())
    - client: the seqno of jobs in progress but not selected
        was being set to zero.  It should be runnable_jobs.size().
        This could potentially cause wrong scheduling decisions.

    client/
        cpu_sched.cpp

Charlie 16 Oct 2009
    - MGR: Fix build break on Mac.

    clientgui/
        mac/
            MacSysMenu.cpp

Rom    19 Oct 2009
    - client: Use is_remote_desktop() instead of the various GPU functions
        to determine when the client software has been switched into Remote
        Desktop mode and shutsdown GPU apps.  This will prevent App crashes.
        
    lib/
        coproc.cpp

Rom    20 Oct 2009
    - client: Use the ANSI version of WTSQuerySessionInformation to determine
        is Remote Desktop is in use.
        
    lib/
        coproc.cpp

Rom    21 Oct 2009
    - WINSETUP: Remove the 'SeDebugPrivilege' prev from the list of privs
        the installer sets for BOINC.
        
    win_build/installerv2/redist/Windows/src/boinccas/
        CAGrantBOINCAdminsRights.cpp
        CAGrantBOINCUsersRights.cpp
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

Rom    23 Oct 2009
    - MGR: Change the shortcut key for switching to the simple view.
    
    clientgui/
        AdvancedFrame.cpp

Rom    23 Oct 2009
    - client: If an administrator has deployed proxy settings at runtime or
        during a VPN connection allow the client to read the new proxy
        configuration from the registry.
        
    client/
        sysmon_win.cpp

David  23 Oct 2009
    - client: no network activity if running CPU benchmarks

    client/
        client_types.h,cpp
        cs_prefs.cpp
        cs_account.cpp
        work_fetch.cpp
    sched/
        sched_shmem.cpp,h

David  23 Oct 2009
    - back out the above

Charlie 26 Oct 2009
    - MGR: Add View menu with Cmd+Shift+A to Mac Simple GUI for disabled users 
        because Mac manager cannot eliminate menu bar or detect active screen 
        reader.  On Windows, manager prevents switch to Simple GUI if screen 
        reader is active.
        
    clientgui/
        sg_BoincSimpleGUI.cpp, .h

Rom    26 Oct 2009
    - client: cleanup formatting of linux platform detection code.
    
    client/
        cs_platforms.cpp

Charlie 29 Oct 2009
    - MGR: Add accessibility support for disabled users to BOINCListCtrl on 
        Mac.
        
    clientgui/
        BOINCBaseView.cpp, .h
        BOINCListCtrl.cpp, .h
        ViewProjects.cpp
        ViewTransfers.cpp
        ViewWork.cpp
        Mac/
            MacAccessibility.cpp (added)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  29 Oct 2009
    - user web: fix bug in "allow beta work" pref.
        The presence of a bool doesn't mean it's true.

    html/inc/
        prefs.inc

David  29 Oct 2009
    - manager: fix typo

    clientgui/
        DlgAdvPreferencesBase.cpp

Charlie 30 Oct 2009
    - MGR: Add accessibility support for disabled users to Attach Wizard's 
        ProjectListCtrl on Mac.
        
    clientgui/
        BOINCListCtrl.cpp, .h
        ProjectListCtrl.cpp, .h
        Mac/
            MacAccessibility.cpp
    mac_build/
        boinc.xcodeproj/
            project.pbxproj

Rom    30 Oct 2009
    - Use mo files instead of po files when executing make install.
      Fixes #940
      
    locale/
        Makefile.am

Charlie 30 Oct 2009
    - MGR: Clarify alert when running as a non-admin user which is not a 
        member of group boinc_master.
        
    clientgui/
        BOINCGUIApp.cpp

Charlie 31 Oct 2009
    - MGR: initialize localization stuff before checking permissions so that 
        the Mac Sandbox permissions error alerts can be translated.  
    - MGR: Removed a trailing newline character from the permissions error 
        alert string, because it was preventing translation.
    - Mac installer: set locale directory permissions to world readable so 
        the Mac Sandbox permissions error alerts can be translated when the 
        user is not a member of group boinc_master.

        NOTE: There seems to be a bug in the localization software: if a 
        localizable string ends with a newline character, that terailing 
        newline is not included in the .mo file, so apparently the string 
        never matches and is not translated. 
        
    clientgui/
        BOINCGUIApp.cpp
        mac/
            SetupSecurity.cpp
    mac_build/
        Mac_SA_Secure.sh

David  31 Oct 2009
    - MGR: fixed some strings, removed trailing \n's

    clientgui
        AdvancedFrame.cpp
        ProjectProcessingPage.cpp

Rom    4 Nov 2009
    - client: Fix linux build break.
    
    client
        cs_platforms.cpp

David  4 Nov 2009
    - test code for new credit system

    db/
        boinc_db.h
    lib/
        average.h
    sched/
        Makefile.am
        credit_test.cpp

Charlie 4 Nov 2009
    - Mac Installer: set most files in BOINC Data directory world-readable 
        (with certain exceptions like gui_rpc_auth.cfg.)  This assures that 
        the screensaver can read its support files. 
        
    clientgui/
        mac/
            SetupSecurity.cpp
    mac_build/
        Mac_SA_Secure.sh

David  5 Nov 2009
    - credit: weight averages by PFC.  Else in SETI@home,
        a large number of short jobs makes the CUDA version
        look much less efficient than it actually is.

    lib/
        average.h
    sched/
        credit_test.cpp

David  5 Nov 2009
    - Move URL-related code to a new file
    - Remove stuff related to SOCKS version, since we only support 5

    lib/
        url.cpp,h
        (several).cpp
    client/
        (several).cpp

Rom    5 Nov 2009
    - MGR: Use mixed case keyboard accelerators instead of all caps, the
        wxGetTranslation function is case sensitive even though the
        rest of the menu code does not care about case.
        
    clientgui/
        AdvancedFrame.cpp
        sg_BoincSimpleGUI.cpp

Charlie 5 Nov 2009
    - Mac: update XCode project for new files url.ccp,.h

     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  6 Nov 2009
    - feeder: fix crashing bug

    db/
        boinc_db.cpp

David  6 Nov 2009
    - client: parse HTTP_PROXY strings of the form
        http://username:passwd@host.dom.dom:port/file
        (we weren't parsing the username and password before).
    - client: fix the feature that lets you exclude a list of hosts
        from going the proxy.

    client/
        cs_cmdline.cpp
        http_curl.cpp
        sysmon_win.cpp
    lib/
        url.cpp,h

David  9 Nov 2009
    - client: the checkin of 15 Oct related to multi-thread apps
        didn't work due to a typo.
    - client: if <ncpus> is present in cc_config.xml,
        we're supposed to act as if there were that many physical CPUs.
        In particular, we need to set host_info.p_ncpus to that value,
        since that's what is reported in scheduler requests.

    client/
        cpu_sched.cpp
        cs_cmdline.cpp
        cs_scheduler.cpp
        sysmon_win.cpp

David  9 Nov 2009
    - client: add --no_gpus cmdline option

    client/
        cs_cmdline.cpp

David  9 Nov 2009
    - scheduler: maintain WORK_REQ::no_jobs_available correctly
        for locality scheduling
    - client: avoid spurious error message when parsing
        <proxy_info> from cc_config.xml

    client/
        log_flags.cpp
    sched/
        sched_locality.cpp

David  9 Nov 2009
    - client: fix bug that crashed client if client_state.xml
        had garbage within <file_info>

    client/
        client_types.cpp

David  10 Nov 2009
    - Progress on new credit system.  Seems to work!

    lib/
        average.h
    sched/
        credit_test.cpp

David  10 Nov 2009
    - scheduler: fix bug that caused no ATI jobs to be sent
        if max_jobs_in_progress defined.

    sched/
        sched_send.cpp

Charlie 10 Nov 2009
    - Mac installer: fix crash bug in AddRemoveUser utility.
        
    mac_installer/
        AddRemoveUser.cpp

David  10 Nov 2009
    - client (Mac/Linux): if the NVIDIA or ATI detection functions
        cause a SIGSEGV, recover from it.

    lib/
        coproc.cpp

David  10 Nov 2009
    - client: the handling of GUI RPCs was inconsistent;
        some expected <request>, some expected <request/>,
        and some would accept either.
        Changed them all to accept either.

        NOTE: this means no request can be a substring of another

    client/
        gui_rpc_server_ops.cpp

David  10 Nov 2009
    - client (Unix): use waitpid(-1, ...) instead of waitpid(0, ...).
        This reaps child processes even if they've changed their process group
        (from Michael Melanson)

    client/
        app_control.cpp

David  10 Nov 2009
    - client: handle no_cpu, no_cuda, no_ati prefs correctly
        when they're in venue-specific prefs.

    client/
        cs_account.cpp

David  11 Nov 2009
    - unix build: fix "out of tree" build (what's that?)
        from Oliver Bock

    Makefile.am

Rom    11 Nov 2009
    - On Windows treat all SEH exceptions as C++ style exceptions.
        NOTE: I'll need to do a little more research and adjust the
          diagnostics stuff later.  I believe that the diagnostics
          framework will now always report an unhandled C++ exception
          for things like an Access Violation.
    - client: On Windows, recover from an Access Violation if/when 
        the GPU functions access violate.
        
    lib/
        boinc_in.h
        coproc.cpp
    win_build/
        *.vcproj

Rom    11 Nov 2009
    - Backout previous change.  The problem doesn't yet manifest
        itself on Windows and the change has too many implications.
        
    lib/
        boinc_in.h
        coproc.cpp
    win_build/
        *.vcproj

David  11 Nov 2009
    - client: fix yesterday's checkin to remove restrictions
        on GUI RPC request elements.
        You can now use either <foo></foo> or <foo/>
        for empty request messages.
    - GUI RPC client library: fix double-free bug.
        it's not clear how this ever worked.

    client
        gui_rpc_server_ops.cpp
    lib/
        coproc.cpp
        gui_rpc_client.cpp

Charlie 11 Nov 2009
    - Mac: Fix build breaks: add url.cpp to gfx_switcher and ss_app.
    
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  11 Nov 2009
    - tweaks to new credit simulator (from Kevin Reed)
    sched/
        credit_test.cpp

David  12 Nov 2009
    - client: if a project has a no_{cpu,cuda,ati} pref set,
        don't accumulate debt for that resource.
        Otherwise we'll accumulate debt forever,
        pushing other projects into overworked state.

    client/
        work_fetch.cpp

Rom    12 Nov 2009
    - WINSETUP: Add the PROJINIT_URL and PROJINIT_AUTH properties
        to the installer custom action code, a project_init.xml
        file will be created in the data directory.
        
    win_build/installerv2/redist/Windows/src/boinccas
        boinccas95.vcproj
        CACreateProjectInitFile.cpp, .h
    win_build/installerv2/redist/Windows/Win32/
        boinccas.dll
        boinccas95.dll
    win_build/installerv2/redist/Windows/x64/
        boinccas.dll
        boinccas95.dll

David  12 Nov 2009
    - Mac compile fix
    lib/
        coproc.cpp

David  12 Nov 2009
    - scheduler: compute no_jobs_available correctly
        in the presence of multiple scheduling types
        (e.g., locality and job array)
        From Nils Brause

    sched/
        handle_request.cpp
        sched_array.cpp
        sched_score.cpp
        sched_send.cpp

David  12 Nov 2009
    - client: add new config options:
        <ignore_cuda_dev>n</ignore_cuda_dev>
        <ignore_ati_dev>n</ignore_ati_dev>
        to ignore (not use) specific NVIDIA or ATI GPUs.
        You can ignore more than one.

    client/
        client_state.cpp
        log_flags.cpp,h
    lib/
        coproc.cpp,h

David  13 Nov 2009
    - client: add <exclusive_gpu_app> option:
        suspend GPU usage when particular apps are running

    client/
        app.cpp,h
        cs_prefs.cpp
        cpu_sched.cpp
        log_flags.cpp,h

Rom    13 Nov 2009
    - Remove need for boinc.dll from the client.
    
    client/
        hostinfo_win.cpp
        main.cpp
    clientctrl/
        boincsvcctrl.cpp
    clientgui/
        BOINCClientManager.cpp
        BOINCGUIApp.cpp
        BOINCGUIApp.h
        stdwx.h
    clienttray/
        tray_win.cpp
        tray_win.h
    lib/
        boinc_win.h
        daemonmgt.cpp (Deleted)
        daemonmgt.h (Added)
        daemonmgt_win.cpp (Added)
        idlemon.h (Added)
        idlemon_win.cpp (Added)
        idlemon_win.h (Deleted)
    win_build/
        boinc.sln
        boinc_dll.vcproj
        boincmgr.vcproj
        boincsvcctrl.vcproj
        boinctray.vcproj
        libboinc.vcproj

David  13 Nov 2009
    - client: fix exclusive_gpu_app feature so that it responds
        within 10 sec instead of 60 sec

    client/
        app.cpp
        log_flags.cpp

David  15 Nov 2009
    - credit tweaks

    sched/
        credit_test.cpp


Bernd 16 Nov 2009
    - api: updates for building Win32 libs & API with MinGW gcc
      added Makefile.mingw used for Einstein@home in lib/ as an
      _alternative_ to api/Makefile.mingw

    lib/
        diagnostics.h
        boinc_win.h
        diagnostics.cpp
        Makefile.mingw
        diagnostics_win.cpp
    api/
        Makefile.mingw
        boinc_api.h


Bernd 16 Nov 2009
    - fixed lib/Makefile.mingw for recent BOINC (compile url.o)

    lib/
        Makefile.mingw

Rom    17 Nov 2009
    - MGR: Remove bitmap that is part of the Wizard.
    
    clientgui/
        AccountInfoPage.cpp
        AccountManagerInfoPage.cpp
        AccountManagerProcessingPage.cpp
        AccountManagerPropertiesPage.cpp
        AlreadyExistsPage.cpp
        BOINCBaseWizard.cpp, .h
        CompletionErrorPage.cpp
        CompletionPage.cpp
        NoInternetConnectionPage.cpp
        NotDetectedPage.cpp
        NotFoundPage.cpp
        ProjectInfoPage.cpp
        ProjectProcessingPage.cpp
        ProjectPropertiesPage.cpp
        ProxyInfoPage.cpp
        ProxyPage.cpp
        TermsOfUsePage.cpp
        UnavailablePage.cpp
        WelcomePage.cpp
        WizardAttachProject.cpp
        wizardex.cpp, .h
    win_build/
        boincmgr.vcproj

David  17 Nov 2009
    - change project_list.php so that it shows platform[plan_class].
        That way the client can know which projects have GPU
        and multithread apps.

    doc/
        get_platforms.inc
        project_list.php

Rom    17 Nov 2009
    - MGR: Add basic support for displaying the Nvidia and ATI logos
        for projects whom support Nvidia and ATI GPUs.
        
        Todo: add descriptions and project images when selected.
        
    clientgui/
        AccountManagerInfoPage.cpp
        ProjectInfoPage.cpp
        ProjectListCtrl.cpp, .h
    clientgui/res/
        atiicon.xpm (Added)
        nvidiaicon.xpm (Added)
    win_build/
        boincmgr.vcproj

Charlie 18 Nov 2009
    - Mac installer: fix 2 installer bugs:
        - Install by non-admin user failed to set login items.
        - Clean installs failed with permissions error -1037.  A reboot would 
            fix this, but system reboots are undesireable.  The problem is 
            that when we create group boinc_master and add the user to the 
            group, it takes about a minute for the permissions to take effect.
            I added a test which delays launching the manager until the 
            permissions are stable.

    clientgui/
        mac/
            SetVersion.cpp
    mac_installer/
        GR-ReadMe.rtf
        make_GridRepublic.sh
        make_ProgThruProc.sh
        PostInstall.cpp
        PTP-ReadMe.rtf
        ReadMe.rtf
        release_boinc.sh
        WaitPermissions.cpp (Added)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
        WaitPermissions-Info.plist (Added)

Rom    18 Nov 2009
    - MGR: Add descriptions for each project as a tooltip and add
        an icon for multicore capable projects.
        
    clientgui/
        ProjectListCtrl.cpp, .h
    clientgui/res/
        multicore.xpm (Added)
    win_build/
        boincmgr.vcproj

Rom    18 Nov 2009
    - MGR: Fix the minimum wizard size problem introduced by removing
        the wizard graphic.

    clientgui/        
        wizardex.cpp

Rom    18 Nov 2009
    - MGR: Better formatting and layout of the project descriptions
        within the list box instead of relying on the tooltips.
        
    clientgui/
        ProjectListCtrl.cpp

Charlie 18 Nov 2009
    - Mac: Fix build breaks.
    
    clientgui/
        ProjectListCtrl.cpp, .h
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

Charlie 19 Nov 2009
    - Mac MGR: fix bug - don't show exit confirmation dialog if shutting 
         down or restarting system.
    - Mac Uninstaller: change owner and group of BOINC Data to those of 
        the user running the uninstaller.
         
    clientgui/
        BOINCGUIApp.cpp
    mac_installer/
        uninstall.cpp

Charlie 19 Nov 2009
    - MGR: Attach Wizard's accessibility support ignores extra panels in 
        several pages to improve clarity for disabled users.
        
    clientgui/
        AccountInfoPage.cpp
        AccountManagerInfoPage.cpp
        CompletionPage.cpp
        ProjectInfoPage.cpp
        WelcomePage.cpp

Rom    19 Nov 2009
    - MGR: Switch back to tooltips for descriptions.
    
    clientgui/
        ProjectListCtrl.cpp

Rom    23 Nov 2009
    - WINBUILD: Introduce the beginning of an automated build system for
        Windows.  The goal is to completely automate the build process
        by creating a self contained environment for the scripts to
        execute under.  When completed it'll be able to do the following:
          * Increment version information
          * Build client software using installed version of VS.
          * Validate symbol files for specific components.
          * Add source file information to symbol files. (This will allow
              VS to automatically download the source file from SVN while
              single-stepping through the code on a clean machine)
          * Code sign executables
          * Build installer
          * Code sign installer
          * Upload updated symbol files and and setup packages
          
        When building interactively:
          * Automatically update the DLLs BOINC and BOINCMgr depend on
              when they have been updated in the source tree.
          * Fix-up BOINC project files when new branches are created
          * Fix-up project files for components BOINC depends on when
              new versions are released.
    
    /
        version.log (added)      
    win_build/
        buildenv.cmd (added)
        boinc_post_bld_rules.cmd
        boinc_cli.vcproj
        boincmgr.vcproj
    ../boinc_depends_win_vs2005
        <Various Files>

David  23 Nov 2009
    - client: show more general prefs on startup
    - manager: show status for jobs aborted because not started by deadline

    client/
        cs_prefs.cpp
        cpu_sched.cpp
    clientgui/
        ViewWork.cpp

Charlie 23 Nov 2009
    - MGR: In Simple View, have Mac screen reader tell user to switch to 
        Advanced View.
    - Mac Installer: update ReadMe files to emphasize that installer may 
        take longer than expected.
        
    clientgui/
        sg_BoincSimpleGUI.cpp, .h
        Mac/
            MacAccessibility.cpp
            MacAccessibility.h (added)
    mac_build/
        boinc.xcodeproj/
            project.pbxproj
    mac_installer/
        GR-ReadMe.rtf
        PTP-ReadMe.rtf
        ReadMe.rtf

David  23 Nov 2009
    - web: fix bug in column-mode prefs display

    html/inc/
        prefs.inc

Rom    24 Nov 2009
    - Introduce boinclog, it basically creates a tab delimited file using
        the message log cache of the client.  Useful for debugging debt
        related issues using Excel or various databases.
        
    client/
        boinc_cmd.cpp
        boinc_log.cpp
    win_build/
        boinclog.vcproj (added)

Rom    24 Nov 2009
    - log: Use the standard BOINC time logging rountine for reporting
        date and time information instead of RFCXXXX.
    - log: Remove the ending newline character from the messages before
        looking for any newline characters which would appear in
        multi-line messages like those from http_debug.
        
    client/
        boinc_log.cpp

Rom    24 Nov 2009
    - log: Introduce the ability to specify where the data directory is
        in case we are attempting to talk to a 5.10 client.
        
    client/
        boinc_log.cpp

Rom    24 Nov 2009
    - log: Fix a parameter parsing bug, hazards of copy/paste/fix-up I
        suppose.  Increment the index before use instead of just adding
        1.  Next iteration through the main loop will then pick-up
        new parameter instead of the value for the previously
        processed command. Parameter parsing 101.
        
    client/
        boinc_log.cpp

Charlie 25 Nov 2009
    - MGR: Implement Mac accessibility for Statistics and Disk tabs, 
        eliminate screen reader saying "unknown" for intermediate panels, 
        general cleanup of accessibility code and operation. 
    - Mac Sandbox: attempt to fix bug where Manager reports that admin user 
        is not authorized to run BOINC.  I haven't been able to reproduce 
        this bug, so this fix is a shot in the dark.
    
    client/
        check_security.cpp
    clientgui/
        AdvancedFrame.cpp
        BOINCBaseView.h
        BOINCListCtrl.cpp, .h
        BOINCTaskCtrl.cpp 
        ProjectListCtrl.cpp. .h
        ViewStatistics.cpp, .h
        common/
            wxPieCtrl.cpp, .h
        Mac/
            MacAccessibility.cpp

Rom    25 Nov 2009
    - client: Treat each HTTP header sent to the server as a new log message.
        Some tools get confused when more than one delimeter is used in
        common file types.
        
    client/
        http_curl.cpp, .h

Charlie 26 Nov 2009
    - MGR: Don't localize keyboard shortcut for Close Window.
    - MGR: Tweaks to Mac accessibility.
    - Mac Installer: Check for our boinc_master and boinc_project users and 
        groups having IDs which conflict with other users and groups on the 
        system.  This can happen when a newer version of the OS includes new 
        users or groups, or when software is installed which defines them.  
        This was causing some of the problems reported by users.  If the 
        installer finds a conflict, it deletes our user or group and creates 
        a new one with a unique ID.

    clientgui/
        AdvancedFrame.cpp
        sg_BoincSimpleGUI.cpp
        Mac/
            MacAccessibility.cpp
    mac_installer/
        PostInstall.cpp

David  27 Nov 2009
    - client: use [wfd] consistently

    client/
        cs_scheduler.cpp

David  27 Nov 2009
    - client: add <cpu_sched_status> log flag.
        This tells you what's running, not why
    - client: add <std_debug> log flag; changes in STD

    The above are to let you log just stuff relevant to debt.
    Right now I'm not sure why we need STD at all.

    client/
        cpu_sched.cpp
        log_flags.cpp,h

Rom    30 Nov 2009
    - MGR: Fix-up tooltips for various elements in the project list control.
    
    clientgui/
        ProjectListCtrl.cpp, .h

Rom    30 Nov 2009
    - LOG: Change the secondary delimeter to '^' for messages that contain
        newline characters.
        
    client/
        boinc_log.cpp

Rom    30 Nov 2009
    - MGR: Hitting the back button on the ProjectInfo page in the wizard when
        you have highlighted a project you are already attached too, should
        not cause the 'you are already attached to project' dialog to be
        displayed.  This also appears to have fixed the random page being
        displayed when the dialog has been dismissed.
        
    clientgui/
        ProjectInfoPage.cpp

David  1 Dec 2009
    - unix: build fixes

    sched, lib/
        Makefile.am

Rom    1 Dec 2009
    - MGR: Filter project list icons so that the icon will only be displayed
        if the volunteer has the hardware to go with it.
        
    clientgui/
        ProjectInfoPage.cpp

David  1 Dec 2009
    - client: apply the LTD normalizing offset to all projects,
        even non-debt-eligible ones.

    client/
        work_fetch.cpp

David  1 Dec 2009
    - client: change how short term debt is updated.
        Old: it's based entirely on CPU time.
            So a GPU project, whose app uses only a fraction
            of a CPU, accrues positive debt.
            This is OK if the project has only GPU apps,
            since STD is not (currently) used for GPU scheduling.
            But some projects have both CPU and GPU apps.
        New: STD is based on total processing.
            It has terms for each resource type.
            The notion of "runnable resource share" is specific to a type.
        Note: the notion of "resource share fraction" appears in
            a couple of other places:
            - it's passed to apps in app_init_data.xml
            - it's passed in scheduler requests.
            It should be broken down by resource type in these cases too.
            TODO Note to self: do this later.

    client/
        app_start.cpp
        client_state.h
        client_types.h
        cpu_sched.cpp
        cs_scheduler.cpp
        work_fetch.cpp,h

Charlie  1 Dec 2009
    - Mac Installer: Rearrange License Agreement so Restrictions section 
        is visible without scrolling and is in bold text.

    mac_installer/
        License.rtf

David  3 Dec 2009
    - client: fix divide-by-zero bug in STD code
    - fix compile warnings

    client/
        cpu_sched.cpp
    clientgui/common/
        wxPieCtrl.cpp
    lib/
        util.cpp

David  3 Dec 2009
    - client: Add offset to LTD of non-eligible projects
        only if the offset is positive.
    - client: some cmdline args set members of config.
        However, config was being cleared after cmdline args were parsed,
        so these args had no effect.
        Instead, clear config before parsing cmdline

    client/
        work_fetch.cpp
        main.cpp
        log_flags.cpp

David  3 Dec 2009
    - client: my STD-related checkin of Dec 1 was bad.
        It computed an "overall STD" as the sum of CPU and coprocs,
        weighted by the coproc's speed, as we do for LTD.
        This was the wrong idea; in the presence of GPUs,
        STDs quickly get pushed to +- 1 day and are truncated there.

        New scheme: STD is maintained per (resource type, project).
        This fixes the above problem,
        and it opens to door to round-robin scheduling of GPUs.
    - client: the calculation of "anticipated debt" was scaling
        by relative resource share.
        This wasn't correct, seems to me.
    - client: rename "debt" to "long_term_debt" in a few places
        (but not in the client state file, for compatibility)

    client/
        client_state.cpp,h
        client_types.cpp,h
        cpu_sched.cpp
        gui_rpc_server_ops.cpp
        work_fetch.cpp,h

Charlie  3 Dec 2009
    - Mac client: update build scripts, XCode project for curl-7.19.7 and 
        c-ares 1.7.0.
    
     mac_build/
        HowToBuildBOINC_XCode.rtf
        buildc-ares.sh
        buildcurl.sh
        setupForBOINC.sh
        boinc.xcodeproj/
            project.pbxproj

Charlie  4 Dec 2009
    - Mac: Update XCode project and build scripts to build under XCode 3.2.1 
        and OS 10.6 Snow Leopard.
        NOTE: We no longer support OS 10.3.9, but have fully integrated 
        support for OS 10.6.x.

    clientscr/
        Mac_Saver_Module.h
        screensaver.cpp
    mac_build/
        HowToBuildBOINC_XCode.rtf
        buildc-ares.sh
        buildcurl.sh
        buildjpeg.sh
        buildWxMac.sh
        boinc.xcodeproj/
            project.pbxproj
    mac-installer/
        Installer.cpp

David  4 Dec 2009
    - client: fix bug in debt calculation
    - client: <zero_debts> zeroes STD too

    client/
        work_fetch.cpp,h

David  4 Dec 2009
    - client: scale STD limit by # of device instances

    client/
        work_fetch.cpp

David  4 Dec 2009
    - client: sort out proxy_info mess.
        Source of proxy info (descending priority)
        - GUI RPC (Manager or boinccmd)
            This and only this is saved in state file.
            If neither HTTP nor SOCKS server name present,
            this is viewed as not present
        - environment vars
        - cc_config.xml

        Show sources of proxy info in message log.
        If one is present but overridden, show a message to that effect.

        This fixes a bug where someone had a proxy info env var and
        forgot about it.
        They got an erroneous message saying no proxy was being used.

    client/
        Makefile.am
        app_start.cpp
        client_state.cpp,h
        cs_cmdline.cpp
        cs_proxy.cpp,h (new)
        cs_statefile.cpp
        gui_rpc_server_ops.cpp
        http_curl.cpp
        log_flags.cpp
        main.cpp
        net_stats.cpp
    lib/
        proxy_info.cpp,h

Charlie  5 Dec 2009
    - Mac: Update XCode project for new files cs_proxy.cpp,h.
    - Mac installer: fix a bug where installer would not start Maanger 
        because getlogin() is not reliable under OS 10.6 when running 
        with authentication; use getenv("USER") instead.
    
     mac_build/
        boinc.xcodeproj/
            project.pbxproj
    mac_installer/
        PostInstall.cpp

David  5 Dec 2009
    - client: bug fixes to recent proxy info checkin

    client/
        cs_proxy.cpp
        main.cpp
        log_flags.cpp
    lib/
        proxy_info.cpp,h

David  6 Dec 2009
    - code shuffle: move client-specific GPU code to a separate file
    client/
        coproc_detect.cpp (new)
        cpu_sched.cpp
        cs_scheduler.cpp
        Makefile.am
        work_fetch.cpp
        client_state.h
    lib/
        coproc.cpp,h

David  6 Dec 2009
    - more code shuffle: add COPROCS to HOST_INFO

    client/
        client_state.cpp,h
        cs_scheduler.cpp
        cpu_sched.cpp
    lib/
        hostinfo.h

David  6 Dec 2009
    - result of code shuffle: the HOST_INFO structure returned
        by the get_host_info() GUI RPC now contains GPU info

    client/
        gui_rpc_server_ops.cpp
        cs_scheduler.cpp
        cs_statefile.cpp
    lib/
        hostinfo.cpp,h
        coproc.cpp,h
    sched/
        sched_types.cpp

Charlie  7 Dec 2009
    - Mac: Update XCode project for new file coproc_detect.cpp.
    
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  7 Dec 2009
    - client: don't set STDs for non-runnable projects to zero.
        Let them float around with other projects.
        Fixes problem where, when a project finishes its last job
        and has a negative STD, it gets an unfair increment
        by being set to zero.

    client/
        work_fetch.cpp

David  8 Dec 2009
    - client: scheduling tweak.
        Old: if a project has RR sim deadline misses,
            select jobs to run high-priority on the basis of:
            1) deadline (earliest first)
            2) estimated time to completion (least first)
            This ignores whether jobs missed their deadline in RR sim,
            so it may choose to run a job that's actually in no
            danger of missing its deadline over one that is.
        New: choose only jobs that miss their deadline in RR sim

    client/
        cpu_sched.cpp
        rr_sim.cpp
        work_fetch.cpp

David  10 Dec 2009
    - client: STD for a device with N instances
        can increase or decrease at N times real time.
        My checkin of 7 Dec reflects this by changing
        the STD limits to +- N*MAX_STD.
        This looks like a bug to users.
        Instead, scale that rate of STD change by 1/N,
        and keep the old limits of +- MAX_STD

    client/
        work_fetch.cpp

David  10 Dec 2009
    - client/manager: first whack at a "snooze GPU" button

    client/
        app.cpp,h
        client_state.cpp,h
        cpu_sched.cpp
        cs_prefs.cpp
        cs_statefile.cpp
        gui_rpc_server_ops.cpp
    clientgui/
        BOINCTaskBar.cpp
        Events.h

David  10 Dec 2009
    - client/manager: finish "snooze GPU" button

    client/
        gui_rpc_server_ops.cpp
    clientgui/
        AsynchRPC.cpp,h
        BOINCTaskBar.cpp
        MainDocument.cpp,h
    lib/
        gui_rpc_client.h
        gui_rpc_client_ops.cpp

David  10 Dec 2009
    - manager: fix bug in the above

    clientgui/
        BOINCTaskBar.cpp

David  11 Dec 2009
    - client/scheduler: deal with situation where GPU has enough
        RAM to run job, but when we actually run the job
        not enough GPU RAM is free, so the application fails.
        This can cause a large number of jobs to fail.
        Solution:
        - app_plan() can specify the GPU RAM requirements of an app version.
            This is passed to the client in a new field
            <gpu_ram> of the <app_version> element.
        - prior to starting or restarting a GPU app, the client
            checks the amount of free RAM on the particular GPU.
            If it's not enough for the app version,
            the client doesn't start it,
            and arranges for the scheduler to ignore it for 5 minutes
            (by which point there might be more free GPU RAM)
        Notes:
        1) this change will have effect only when
            both client and scheduler are updated.
        2) the check is done in enforce_schedule(),
            rather than schedule_cpus(),
            because only at that point
            have we assigned a specific GPU to the job.
        3) there's another case to deal with:
            a GPU app's malloc of GPU RAM fails in the middle of the job.
            Currently the job fails.
            I plan to add an API call boinc_temporary_exit(x) so
            that the job can exit and potentially restart in x seconds.
            (In principle this mechanism is sufficient for all cases,
            but it could lead to a lot of starting/exiting,
            so the current change is worthwhile).

    client/
        client_types.cpp,h
        coproc_detect.cpp
        cpu_sched.cpp
        work_fetch.cpp
    lib/
        coproc.h
    sched/
        sched_customize.cpp,h
        sched_types.h

David  11 Dec 2009
    - manager: add GPU always/auto/never menu items

    clientgui
        AdvancedFrame.cpp,h
        Events.h
    lib/
        daemonmgt.h

David  11 Dec 2009
    - client: a couple of switch statements were missing breaks.
        This would have caused work-fetch errors if
        using the no_cuda, no_cpu etc. prefs

    client/
        work_fetch.cpp

David  11 Dec 2009
    - boinccmd: fix output of --get_disk_usage

    lib/
        gui_rpc_client_print.cpp
        gui_rpc_client.h

David  11 Dec 2009
    - stripchart: use /usr/bin/env perl in script headers

    stripchart/
        stripchart
        stripchart.cgi
        stripchart.cnf

David  12 Dec 2009
    - client: maintain mean STD at zero over all projects,
        not just runnable ones

    client/
        work_fetch.cpp

David  12 Dec 2009
    - API and client: add an API function boinc_temporary_exit(dt).
        This exits the app with status zero and no finish file,
        so the client will restart it.
        It creates a file "temporary_exit" containing dt.
        The (new) client reads this file and will postpone
        scheduling the job again for dt seconds.
        Old clients will treat it as a premature exit,
        and potentially try to reschedule the job immediately.

        This function is intended for GPU applications that
        fail to allocate GPU RAM,
        presumably because a non-GPU application has it allocated.
        We don't want the job to fail,
        and we want to wait for a while before trying the allocation again.

    api/
        boinc_api.cpp,h
    client/
        app.h
        app_control.cpp
    lib/
        app_ipc.h

David  13 Dec 2009
    - wrapper: fix fraction-done bug

    samples/wrapper/
        wrapper.cpp

Charlie 13 Dec 2009
    - API and client: Fix bugs (indicated by compiler warnings) in recent 
        check-ins.  David: please confirm these changes.
    
    client/
        app_control.cpp
        client_types.cpp
    
Charlie 13 Dec 2009
    Mac command-line install: add .txt extension to copyright files.
    
    mac_installer/
        release_boinc.sh

Charlie 14 Dec 2009
    - SS: Allow users to set Default (BOINC) screensaver duration, application 
        screensaver duration and application screensaver change interval from 
        screensaver control panel.  Implemented on Mac, needs additional work 
        for Windows.

    clientscr/
        mac_saver_module.cpp
        Mac_Saver_Module.h
        Mac_Saver_ModuleView.m, .h
        screensaver.cpp
        screensaver_win.cpp, .h
        res/
            BOINCSaver.nib

David  14 Dec 2009
    - client: ATI: call calShutdown() when done.
        Otherwise Lenovo can't switch to low-power GPU

    client/
        coproc_detect.cpp

David  14 Dec 2009
    - client/manager: show coprocessor short-term debts

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

David  14 Dec 2009
    - client: fix bug in insufficient video RAM feature
    - client: improve CPU sched debug msgs
    - client: fix "temporary exit" feature
    
    client/
        app_control.cpp
        app_start.cpp
        client_state.h
        cpu_sched.cpp
        sandbox.h
    lib/
        filesys.h

David  14 Dec 2009
    - client: typo fix

    client/
        cs_scheduler.cpp

David  15 Dec 2009
    - web: bb2html() previously generated HTML that assumed
        the BOINC stylesheet (main.css) was included.
        This is no good if we're exporting the HTML.
        Add an option to generate generic HTML.
    - web: add options to the forum RSS feed:
        1) threads_only: just show threads (i.e. 1st post in each thread)
        2) truncate: truncate posts to 256 chars.
            If this is not set, convert post from BBcode to generic HTML,
            and put this (XML-encoded) in item.description
    This is preparation for using the forum code for project news,
    and for displaying forum RSS feeds in the manager.

    html/
        inc/
            text_transform.inc
        user/
            forum_rss.php

Charlie 15 Dec 2009
    - Mac SS: In Mac screensaver control panel say "overview screensaver" not 
        "BOINC screensaver" so we don't need 3 different versions of the NIB 
        file for branding BOINC, GR and PtP.

    clientscr/
        res/
            BOINCSaver.nib

David  15 Dec 2009
    - boinccmd: compile fix

    client/
        boinc_cmd.cpp

Charlie 16 Dec 2009
    - Mac Uninstaller: Properly change screensaver settings under OS 10.6.
         
    mac_installer/
        uninstall.cpp

Rom    16 Dec 2009
    - Cleanup various warnings
    - WINSCR: Implement new configuration dialog with new parameters
    - WINSCR: Remove crufty code
    - WINSCR: Update copyrights in resource files
    
    client/
        app.cpp
    clientscr/
        boinc_ss.h
        boinc_ss.rc
        boinc_ss_opengl.h
        boinc_ss_opengl.rc
    clientscr/
        screensaver.cpp, .h
        screensaver_win.cpp, .h
    lib/
        common_defs.h
        crypt.cpp
        idlemon_win.cpp
        win_util.cpp
    samples/worker/
        worker.cpp
    win_build/
        boinc_ss.vcproj
        multi_thread.vcproj
        sleeper.vcproj
        ss_app.vcproj
        uc2_graphics.vcproj

David  16 Dec 2009
    - web: change the way project news is stored.
        Old: in a flat file (html/project/project_news.inc)
        New: in a forum (called "News" by default)
        The script html/ops/news_convert.php copies news from
        old to new format.
        You'll also need to edit your index.php and use
        "show_news(0, 5)" to show news.
    - web: added a "message of the day" mechanism.
        Edit html/user/motd.php to show a message.
        This will be shown as the first news item,
        but it's not archived (i.e., it's not a forum post)

    html/
        inc/
            bbcode_convert.inc (new)
            forum.inc
            forum_db.inc
            forum_rss.inc (new);
            news.inc
        ops/
            bbcode_convert.php
            bbcode_convert_response1.php
            bbcode_convert_response2.php
            bbcode_convert_signature.php
            news_convert.php (new)
            create_forums.php
        project_sample/
            project_news.inc (removed)
        user/
            all_news.php
            forum_forum.php
            forum_post.php
            old_news.php
            rss_main.php (new)
            sample_index.php
            sample_motd.php (new)
            sample_rss_main.php (removed)
    py/Boinc/
        setup_project.py
    tools/
        upgrade

David  16 Dec 2009
    - web: bug fixes to the above.

    html/
        inc/
            forum.inc
            forum_rss.inc
            news.inc
        ops/
            news_convert.php
        user/
            forum_forum.php
            forum_post.php

Charlie 17 Dec 2009
    - client: add missing dlsym of cuMemGetInfo() on non_Windows platforms. 

    client/
        coproc_detect.cpp

David  17 Dec 2009
    - client: show <cpu_sched> message when suspend/resume GPU activity

    client/
        cs_prefs.cpp

David  17 Dec 2009
    - client: there are oddball cases where the client has an app for which
        avg_ncpus > ncpus.   Allow such jobs to run; otherwise nothing runs.

    client/
        cpu_sched.cpp

David  17 Dec 2009
    - client: in computing "anticipated" STD, scale by ninstances
        (from John McLeod)

    client/
        cpu_sched.cpp

Rom    17 Dec 2009
    - MGR: Make the minimum version of wxWidgets we support 2.8.0 or better
    - MGR: Start cleaning up warning related to 2.6 backwards compatibility
    
    /
        configure.ac
    clientgui/
        sg_DlgPreferences.cpp

Rom    17 Dec 2009
    - MGR: More cleanup work
    
    clientgui/
        BOINCGUIApp.cpp
        BOINCTaskBar.cpp
        sg_ViewTabPage.cpp
    clientgui/common/
        wxPieCtrl.cpp, .h

Rom    17 Dec 2009
    - MGR: Deconflict menu item IDs.
    
    clientgui/
        Events.h

David  17 Dec 2009
    - web: some fixes that arose from converting BOINC's news
        to forum format.

    html/
        inc/
            text_transform.inc
            forum.inc
            news.inc
        ops/
            news_convert.php
        user/
            forum_forum.php

Rom    18 Dec 2009
    - MGR: Update the base taskbar code to include some things
        from Windows Vista and Windows 7.
    - MGR: Update the base taskbar code for thread safety.
    - MGR: Treat network status messages as NIF_REALTIME, if the
        screensaver or the logon screen appears, the messages are
        discarded.
    - MGR: Create a new class of balloon messages which can be
        queued for notifications.
        
    clientgui/msw/
        taskbarex.cpp, .h

Charlie  18 Dec 2009
    - MGR: fix another bug due to changes for Snow Leopard compatibility:
        on OS 10.4.11 (Tiger) and perhaps others, when Automatic Login is 
        set, getlogin() returns "root" for a time after the system is first 
        booted, causing the Manager to think the user is not a member of 
        group boinc_master.  So check "USER" environment variable instead.

    client/
        check_security.cpp

Rom    18 Dec 2009
    - MGR: Cleanup wxFlatNotebook warnings.
    
    clientgui/
        wxFlatNotebook.cpp

David  18 Dec 2009
    - client (Mac): it's DYLD_LIBRARY_PATH, not DYLIB_LIBRARY_PATH

    client/
        app_start.cpp

David  18 Dec 2009
    - client and GUI RPC: add some plumbing for notices

    client/
        Makefile.am
        cs_notice.cpp,h (new)
        gui_rpc_server_ops.cpp
    lib/
        Makefile.am
        gui_rpc_client.h
        gui_rpc_client_ops.cpp
        notice.cpp,h (new)

Rom    18 Dec 2009
    - MGR: Add a test notification menu item to the taskbar
    - MGR: When a notification is clicked open up the GUI
        and switch to the notification tab in the advanced
        view.
    - MGR: Reorder tabs
    - MGR: Review messages tab
    - MGR: cleanup code in various places
    
    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.cpp, .h
        BOINCGUIApp.cpp, .h
        BOINCTaskBar.cpp, .h
        DlgEventLog.cpp, .h (Added)
        Events.h
        MainDocument.cpp, .h
        ViewNews.cpp, .h (Deleted)
        ViewNotifications.cpp, .h (Added)
    win_build/
        boincmgr.vcproj

David  18 Dec 2009
    - scheduler: use a more accurate way of estimating total FLOPS
        and avg_ncpus for GPU apps.
        App versions are now characterized by two parameters
        (we assume that the app uses either the CPU or the GPU
        at a given time, but not both):
        - the fraction of FLOPs performed on the CPU
        - when the app is using the GPU, the fraction of peak FLOPS
            that it gets.
        We then run the numbers to get the total FLOPS and avg_ncpus.

    sched/
        sched_customize.cpp

Rom    18 Dec 2009
    - MGR: content that was formally in the messages tab can now be
        found in the Event Log, check the advanced menu.
        
    clientgui/
        AdvancedFrame.cpp, .h
        DlgEventLog.cpp, .h
        DlgEventLogListCtrl.cpp, .h (Added)
        Events.h
    win_build/
        boincmgr.vcproj

Charlie  18 Dec 2009
    - client: fix bug.
    - Mac: Add new files DlgEventLog.cpp,.h, DlgEventLogListCtrl.cpp,.h, 
        ViewNotifications.cpp,.h, cs_notice.cpp,h, notice.cpp,h to XCode 
        project.

    lib/
         notice.cpp
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

Rom    19 Dec 2009
    - MGR: Remove some old wxWidgets 2.4 cruft for dealing with Hyperlinks.
        wxWidgets now natively supports them.
        
    clientgui/
        AccountInfoPage.cpp, .h
        AccountManagerInfoPage.cpp
        AdvancedFrame.cpp
        BOINCBaseFrame.cpp, .h
        BOINCGUI.cst (deleted)
        BOINCGUI.pjd (deleted)
        BOINCTaskBar.cpp
        BOINCWizards.h
        DlgAbout.cpp, .h
        DlgAdvPreferences.cpp
        DlgEventLog.cpp
        hyperlink.cpp, .h (deleted)
        ProjectInfoPage.cpp
        sg_BoincSimpleGUI.cpp
        sg_DlgMessages.cpp
        sg_DlgPreferences.cpp
        sg_ProjectsComponent.cpp
        sg_StatImageLoader.cpp
        stdwx.h
        ViewProjects.cpp
        ViewWork.cpp
        WelcomePage.cpp
        WizardAttachProject.cpp
    win_build/
        boinc_ss.vcproj
        boincmgr.vcproj
        libboinc_staticcrt.vcproj

David  18 Dec 2009
    - web: small fix

    html/inc/
        text_transform.inc

Charlie  19 Dec 2009
    - MGR: Fix Mac compile errors caused by adding Windows-only code to 
        cross-platform source files.  Also fix compiler warnings. 
    - Mac: Remove deleted files hyperlink.cpp,.h from XCode project.

    clientgui/
        BOINCTaskBar.cpp
        sg_StatImageLoader.cpp
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

Rom    19 Dec 2009
    - MGR: Convert the event log to a modeless dialog.
    
    clientgui/
        AdvancedFrame.cpp, .h
        DlgEventLog.cpp

David  19 Dec 2009
    - web: add Comment link to news items

    html/inc/
        news.inc

Rom    19 Dec 2009
    - WINSCR: Remove some more crufty code from the screensaver.
    
    clientscr/
        screensaver_win.cpp, .h

Charlie  19 Dec 2009
    - MGR: Begin fixing new Event Log to integrate properly with async 
        RPC logic and other bug fixes.

    clientgui/
        AdvancedFrame.cpp, .h
        DlgEventLog.cpp, .h
        Events.h
     mac_build/
        boinc.xcodeproj/
            project.pbxproj

David  20 Dec 2009
    - scheduler: fix SQL injection vulnerability
    sched/
        handle_request.cpp

David  21 Dec 2009
    - manager/client: show PID in task properties;
        add PID to RESULT structure in GUI RPC

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

David  21 Dec 2009
    - client: a big glob of new code related to notices.
        Not functional yet.

    client/
        client_types.h
        cs_notice.cpp,h
        cs_scheduler.cpp
        gui_rpc_server_ops.cpp
        scheduler_op.cpp,h
    html/inc/
        news.inc
    lib/
        notice.cpp,h

David  21 Dec 2009
    - Win compile fixes.  Also, needed to provide a replacement
        for strptime() on Win.  WTF?

    client/
        app.h
        client_msgs.h
        client_types.h
        cs_notice.cpp
        work_fetch.h
    lib/
        notice.cpp

David  21 Dec 2009
    - web: fix bug if news item title occurs in middle of content

    html/inc/
        news.inc

Charlie  21 Dec 2009
    - MGR: Make GetCurrentViewPage() indepenedent of tab positions. 
    - MGR: Always set Periodic RPC timer to 1 second if showing event log.
    - MGR: Minor code cleanup from Rom.
    
    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.h
        BOINCBaseView.cpp, .h
        BOINCGUIApp.cpp
        DlgEventLog.cpp
        sg_BoincSimpleGUI.h
        MainDocument.cpp, .h
        ViewNotifications.cpp, .h
        ViewProjects.cpp, .h
        ViewResources.cpp, .h
        ViewStatistics.cpp, .h
        ViewTransfers.cpp, .h
        ViewWork.cpp, .h
        Mac/
            MacAccessibility.cpp

David  21 Dec 2009
    - client: intermediate checkin for RSS/notice stuff.
        It's coming along.

    client/
        acct_mgr.cpp
        acct_setup.cpp
        client_state.cpp
        cs_notice.cpp,h
        cs_scheduler.cpp
        file_names.h
        gui_http_cpp,h
        net_stats.cpp

Rom    21 Dec 2009
    - MGR: wxHyperlinkCtrl doesn't accept an empty url and title
        at the same time when building a debug build.
        
    clientgui/
        AccountInfoPage.cpp

Charlie  21 Dec 2009
    - MGR: change ID_DLGEVENTLOG to unique value 30000. 
        NOTE: ID_ANYDIALOG is defined as 10000, and is used by the 
        CBOINCGUIApp::IsModalDialogDisplayed() to determine whether to 
        dim menu items, etc.  The ID 10000 must not be used for non-
        modal dialogs, and should be used for all modal dialogs.
    - MGR: add minimize and maximize boxes to Event Log window.
    - MGR: (Mac only) Close Window menu item closes the Event Log window 
        if it is the front window.

    clientgui/
        BOINCBaseFrame.cpp
        DlgEventLog.h

Rom    22 Dec 2009
    - MGR: Treat the Event Log dialog as an orphan dialog. This allows
        the main manager window to move to the top of the z-order even
        while the dialog is up.
        
    clientgui/
        DlgEventLog.cpp, .h

David  22 Dec 2009
    - web: fix motd bug

    html/inc
        news.inc

Rom    22 Dec 2009
    - MGR: Move the event log initialization and clean-up to the application
        class, it is not owned by any frame, it is modeless.
        
        NOTE: Need to consult with Charlie about how best to register modeless
          dialogs for RPC updates. They are not owned by a frame and should
          be capable of being displayed or view from any frame.  i.e.
          SwitchActiveGUI() should not have any effect on them.
    - MGR: Display a window title with the async waiting dialog.
          
    clientgui/
        AdvancedFrame.cpp, .h
        AsyncRPC.cpp
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp, .h
        DlgEventLog.cpp

Rom    22 Dec 2009
    - MGR: Make sure the correct constructor is called, otherwise nothing
        happens.
        
    clientgui/
        DlgEventLog.cpp, .h

Rom    22 Dec 2009
    - MGR: Reenable the refresh timer local to CDlgEventLog, but do not
        issue an RPC, determine the size by asking the vector.
        
    clientgui/
        DlgEventLog.cpp, .h

David  22 Dec 2009
    - client: more notice stuff.  Add <notice_debug> log flag

    client/
        client_state.cpp
        cs_notice.cpp,h
        log_flags.cpp,h

David  22 Dec 2009
    - client: when parsing cc_config.xml,
        clear vectors so we don't end up with duplicates

    client/
        log_flags.cpp

David  22 Dec 2009
	- client: more notice stuff.  Substantial progress!
		We're now saving feed lists, and fetching items from feeds.

	client/
		client_state.cpp
		client_types.h
		cs_notice.cpp,h
		cs_scheduler.cpp
		scheduler_op.cpp,h

Charlie  22 Dec 2009
    - MGR: Fix bugs in my Close Window logic, rename CloseEventLog() to 
        OnEventLogClose() because calling it does not close the event log. 

    clientgui/
        BOINCBaseFrame.cpp
        BOINCGUIApp.cpp, .h
        DlgEventLog.cpp

Charlie  22 Dec 2009
    - MGR: Adapt my previous fixes to Event Log for the new orphan 
        dialog implementation to integrate properly with async RPC logic:
        - Always set Periodic RPC timer to 1 second if showing event log.
        - Eliminate separate timer.
        - GetCurrentViewPage() returns VW_MSGS bit if Event Log is open.
    - MGR: if Event Log is open, close it in CBOINCBaseFrame::OnExit() 
        so Manager can shut down properly.
        
    clientgui/
        AdvancedFrame.cpp, .h
        BOINCBaseFrame.cpp, .h
        BOINCGUIApp.cpp, .h
        DlgEventLog.cpp
        Events.h
        MainDocument.h
        sg_BoincSimpleGUI.cpp, .h

Charlie  23 Dec 2009
    - MGR: Fix save and restore of Event Log column widths.
    
    clientgui/
        DlgEventLog.cpp

David  23 Dec 2009
	- client: further work on notices.
		The RSS feed part of it is mostly working.
	- client: fix bug in XML_PARSER (tags with attributes weren't
		parsed correctly if no attribute buffer supplied)

	client/
		cs_notice.cpp,h
	lib/
		notice.cpp,h
		parse.cpp

David  23 Dec 2009
    - internal change: rename MSG_USER_ERROR to MSG_USER_ALERT

    client/, clientgui/, lib/
        various files

David  23 Dec 2009
    - client: code cleanup: most message code into a class

    client/
        client_msgs.cpp,h
        gui_rpc_server_ops.cpp
        main.cpp,h
        cs_scheduler.cpp

David  23 Dec 2009
    - client: more work on notices.
        Create notices for client and scheduler user alerts

    client/
        cs_notices.cpp,h
        client_msgs.cpp
        file_names.h
    lib/
        notice.cpp,h

Charlie 23 Dec 2009
    - Mac MGR: Call Mac accessibility calls GetViewDisplayName() instead of 
        GetViewName() to announce localized tab names.
        
    clientgui/
        Mac/
            MacAccessibility.cpp

David  24 Dec 2009
    - client: divide LTD deltas by ninstances, same as for STD.
        This will prevent LTD from changing faster than real time,
        and makes the notion of "overworked" meaningful
        regardless of ninstances

    client/
        work_fetch.cpp

David  24 Dec 2009
    - client: add logic to work fetch so that each project
        will have enough jobs to use its share of resource instances.
        This avoids situations where e.g. on a 2-CPU system
        a project has 75% resource share and 1 CPU job,
        and its STD increases without bound.
        
        Did a general cleanup of the logic for computing
        work request sizes (seconds and instances).

    client/
        work_fetch.cpp,h
        rr_sim.cpp
    sched/
        handle_request.cpp

David  24 Dec 2009
    - web: if someone edits their profile, remove it from the cache
        so that they and others will see the new version.

    html/
        inc/
            cache.inc
        user/
            view_profile.php
            create_profile.php

David  30 Dec 2009
    - client: Unix: if can't create client lock file,
        report ERR_OPEN rather than ERR_ALREADY_RUNNING
        fixes #970

    lib/
        util.cpp
        filesys.cpp

David  30 Dec 2009
    - upgrade: add --server_only option
        (updates scheduler and back-end programs, but not web code)
        fixes #968

    tools/
        upgrade
    py/Boinc/
        setup_project.py

David  30 Dec 2009
    - user web: set user.has_profile when user edits profile
        (shouldn't be necessary, but will fix problem cases)

    html/user/
        create_profile.php

David  31 Dec 2009
    - API: add boinc_init_parallel().
        This is like boinc_init() but for multithread apps.
        Unlike boinc_init(), it suspends/resumes all threads in the app,
        not just one.
        In Unix, this is done by forking,
        and having the parent process handle suspend/resume messages
        and suspend/resume the child using signals
        On Win, there's some nasty code that enumerates all
        threads in the whole system, and suspends/resumes
        those in a particular process.

    api/
        boinc_api.cpp,h
        graphics_lib.cpp
    lib/
        win_util.cpp

David  31 Dec 2009
    - example multi-thread app: change to use boinc_init_parallel().
        It's way simpler now.
    samples/multi_thread/
        multi_thread.cpp
