• Login
Community
  • Login

Notepad++ File Status Auto-Detection not working

Scheduled Pinned Locked Moved General Discussion
file statusauto-detectionnot working
57 Posts 10 Posters 44.3k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C
    chcg
    last edited by Jan 20, 2018, 9:02 AM

    There were 3 changes in the appveyor config:

    1. VM image, as Visual Studio 2013 doesn’t contain vs2015

    2. calling Microsoft Visual Studio 14.0\VC\vcvarsall.bat for vs2015 build

    3. using notepadPlus.vs2015.vcxproj for building the vs2015 version.

    4. couldn’t be avoided. The sourcecode itself is identical and either it is something with the vcxproj for vs2015 which causes the issue or the vcvarsall.bat + the toolset.

    Maybe the build of scintilla could also have an influence.

    I will do a rebuild with just the toolset changed and using the notepadPlus.vcxproj also for VS2015.

    And another one with /Zc:threadSafeInit-

    1 Reply Last reply Reply Quote 1
    • C
      chcg
      last edited by Jan 20, 2018, 12:25 PM

      First test is available here:
      https://ci.appveyor.com/project/chcg/notepad-plus-plus/build/1.0.117

      VS2013 config with PlatformToolset=v140_xp

      C 1 Reply Last reply Jan 20, 2018, 1:13 PM Reply Quote 0
      • C
        Claudia Frank @chcg
        last edited by Jan 20, 2018, 1:13 PM

        @chcg

        v120 build works, v140 does not.

        Cheers
        Claudia

        1 Reply Last reply Reply Quote 0
        • C
          chcg
          last edited by Jan 20, 2018, 5:57 PM

          VS2015 build with /Zc:threadSafeInit- at https://ci.appveyor.com/project/chcg/notepad-plus-plus/build/1.0.118

          C 2 Replies Last reply Jan 20, 2018, 9:38 PM Reply Quote 1
          • C
            Claudia Frank @chcg
            last edited by Jan 20, 2018, 9:38 PM

            @chcg

            thx, will do the test and report the status later (2-3 hours).

            Cheers
            Claudia

            1 Reply Last reply Reply Quote 0
            • C
              Claudia Frank @chcg
              last edited by Jan 20, 2018, 10:23 PM

              @chcg

              sorry but additional compiler flag does not work either.

              Cheers
              Claudia

              1 Reply Last reply Reply Quote 0
              • V
                Vitaliy Dovgan
                last edited by Jan 21, 2018, 4:49 PM

                Looks like time to use additional logging then. I mean, logging around file status detection. (I briefly looked at the code, and it’s not obvious at the first glance what exactly can go wrong.)

                1 Reply Last reply Reply Quote 1
                • V
                  Vitaliy Dovgan
                  last edited by Feb 6, 2018, 2:08 PM

                  I’ve found out the cause of the problem. In VS2015, the stupids from Microsoft have broken _wstat for Windows XP! According to a simple change inside the file “PowerEditor\src\ScitillaComponent\Buffer.cpp”:

                  int st = generic_stat(_fullPathName.c_str(), &buf);
                  char s[512];
                  sprintf(s, "Buffer::checkFileState() -> %d, errno %d, FileName \"%S\"", st, errno, _fullPathName.c_str());
                  writeLog(_T("1.txt"), s);
                  

                  one can notice that _wstat always returns -1 under Windows XP with errno 22 (EINVAL).
                  So the fix seems to be to replace _wstat with some native WinAPI function, since we can not rely on VS2015’s CRT anymore.

                  1 Reply Last reply Reply Quote 1
                  • C
                    chcg
                    last edited by Feb 6, 2018, 6:41 PM

                    See https://github.com/joncampbell123/dosbox-x/issues/403 and https://github.com/joncampbell123/dosbox-x/issues/438 which also suffers from this issue. From https://stackoverflow.com/questions/6566978/whats-the-difference-between-struct-stat64-and-struct-stati64-on-win32, maybe we are facing a 64bit issue, see https://msdn.microsoft.com/en-US/library/14h5k7ff.aspx. What happens on using _wstat64.

                    1 Reply Last reply Reply Quote 0
                    • V
                      Vitaliy Dovgan
                      last edited by Feb 6, 2018, 7:15 PM

                      Yes, it could be that _USE_32BIT_TIME_T needs to be defined for Windows XP. On the other hand, it was reported that defining _USE_32BIT_TIME_T, in its turn, creates problems with std::chrono… Just madness.

                      1 Reply Last reply Reply Quote 0
                      • V
                        Vitaliy Dovgan
                        last edited by Feb 7, 2018, 9:50 AM

                        Basically, _wstat is used there just to get the file modification time and check if it is read-only or not. There are 2 corresponding WinAPI functions that can be used instead, without being relying on _wstat at all: GetFileTime and GetFileAttributes. Using them, any further breaking change in _wstat will not affect Notepad++ at all!

                        1 Reply Last reply Reply Quote 0
                        • V
                          Vitaliy Dovgan
                          last edited by Feb 10, 2018, 10:49 AM

                          As far as I understand, an honour to implement the proposed change is mine :) As Notepad++ is the base for all its plugins, I consider such task as quite important. I don’t promise I do it quickly, but I already have an idea what exactly to do. Since _wstat is already called through a macro, the most straightforward change will be to call own function instead of _wstat via the very same macro, providing own structure returned by the function, and the structure will be filled by the WinAPI functions. So the code will remain similar at the surface, but will not rely on _wstat anymore.

                          1 Reply Last reply Reply Quote 1
                          • V
                            Vitaliy Dovgan
                            last edited by Feb 14, 2018, 8:59 PM

                            OK, guys, I want to make everything in the proper way :) Do you usually create a new git branch to use it for the pull request? Or just directly modify the “master” branch? And is there any possible hints/problems regarding authorization (such as special write rights, SSH, etc.)?

                            1 Reply Last reply Reply Quote 0
                            • C
                              chcg
                              last edited by Feb 15, 2018, 8:52 PM

                              See https://github.com/notepad-plus-plus/notepad-plus-plus/pulls e.g.
                              https://github.com/notepad-plus-plus/notepad-plus-plus/pull/4172 made from branch cmeriaux:fix_shortcut_validity. So branching your forked master is the better way, so you could easily pull upstream master again for future work. See also https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/CONTRIBUTING.md. There shouldn’t be problems regarding auth against your github fork.

                              1 Reply Last reply Reply Quote 1
                              • C
                                chcg
                                last edited by Feb 15, 2018, 8:58 PM

                                Maybe check this one https://gist.github.com/Chaser324/ce0505fbed06b947d962 regarding git usage with github.

                                1 Reply Last reply Reply Quote 2
                                • V
                                  Vitaliy Dovgan
                                  last edited by Feb 16, 2018, 10:47 PM

                                  Probably I’m doing something wrong, but here is what I’m getting currently:

                                  git.exe push --progress "origin" feature/file-status-detection-winxp
                                  
                                  remote: Permission to notepad-plus-plus/notepad-plus-plus.git denied to d0vgan.
                                  fatal: unable to access 'https://github.com/notepad-plus-plus/notepad-plus-plus.git/': The requested URL returned error: 403
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    chcg
                                    last edited by Feb 20, 2018, 5:38 PM

                                    You can’t push to the repo of donho at https://github.com/notepad-plus-plus/notepad-plus-plus. Do you have a fork of it? Something like https://github.com/chcg/notepad-plus-plus?

                                    1 Reply Last reply Reply Quote 0
                                    • V
                                      Vitaliy Dovgan
                                      last edited by Feb 21, 2018, 8:27 PM

                                      That must be it! I did not fork it indeed, just created a branch directly from the https://github.com/notepad-plus-plus/notepad-plus-plus. Will do the fork, thanks.

                                      1 Reply Last reply Reply Quote 0
                                      • V
                                        Vitaliy Dovgan
                                        last edited by Feb 22, 2018, 11:29 AM

                                        You know, I realized I absolutely hate the f*ckin’ git, just completely and absolutely.
                                        I’ve created https://github.com/d0vgan/notepad-plus-plus/tree/feature/file-status-detection-winxp and I followed hell of instructions to synchronize it with the main (non-forked) repository. Currently I’m having:

                                        git remote -v
                                        origin  https://github.com/d0vgan/notepad-plus-plus.git (fetch)
                                        origin  https://github.com/d0vgan/notepad-plus-plus.git (push)
                                        upstream        https://github.com/notepad-plus-plus/notepad-plus-plus.git (fetch)
                                        upstream        https://github.com/notepad-plus-plus/notepad-plus-plus.git (push)
                                        

                                        And I already tried commands such as (I’m listing them here one by one, but actually I tried them in different order according to what I found in internet):

                                        git fetch upstream
                                        git merge upstream/master
                                        git rebase upstream/master
                                        git rebase master
                                        

                                        but still an attempt to create a pull request shows much more changes than I actually made.
                                        I just don’t have any idea what else I need to do to overfight this git madness. It just drives me out of my wits.

                                        1 Reply Last reply Reply Quote 2
                                        • V
                                          Vitaliy Dovgan
                                          last edited by Vitaliy Dovgan Feb 26, 2018, 10:17 AM Feb 26, 2018, 10:16 AM

                                          OK, I’ve created https://github.com/notepad-plus-plus/notepad-plus-plus/pull/4226
                                          I have no idea idea why git shows changes in the functions isCertificateValidated and isAssoCommandExisting - I did not touch them at all! If I knew how to get rid of those “changes”, I would do it already.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          The Community of users of the Notepad++ text editor.
                                          Powered by NodeBB | Contributors