codefori / vscode-ibmi

🌍 IBM i development extension for VS Code
https://codefori.github.io/docs/#/
MIT License
284 stars 93 forks source link

Downloading using source file with member names that have dollar signs in them #2264

Open m-tyler opened 1 month ago

m-tyler commented 1 month ago

I was playing around with the download of source from the source file point. It was all going good until I noticed nothing downloaded. Looking at the log, member names with $ dollar sign characters (@ at sign seems good).

I will upload a test case of members that cause the same error if there are more.


Context Version
Code for IBM i version 2.13.0
Visual Studio Code version 1.93.1
Operating System win32_x64
Active extensions ``` CL (vscode-clle): 1.1.7 Code Spell Checker (code-spell-checker): 3.0.1 Code for IBM i User Spooled Files (vscode-ibmi-UserSpooledFiles): 0.1.0 Code for IBM i Walkthroughs (vscode-ibmi-walkthroughs): 0.5.0 Configuration Editing (configuration-editing): 1.0.0 Data Preview (vscode-data-preview): 2.3.0 Db2 for IBM i (vscode-db2i): 1.5.1 Emmet (emmet): 1.0.0 Error Lens (errorlens): 3.20.0 Excel Viewer (gc-excelviewer): 4.2.62 Extension Authoring (extension-editing): 1.0.0 Git (git): 1.0.0 Git Base (git-base): 1.0.0 GitHub (github): 0.0.1 GitHub Authentication (github-authentication): 0.0.2 Hawkeye Pathfinder (vscode-ibmi-hawkeye): 0.0.13 JSON Language Features (json-language-features): 1.0.0 Merge Conflict (merge-conflict): 1.0.0 NPM support for VS Code (npm): 1.0.1 Node Debug Auto-attach (debug-auto-launch): 1.0.0 Overtype (overtype): 0.5.0 Partial Diff (partial-diff): 1.4.3 RPGLE (vscode-rpgle): 0.26.11 Rainbow CSV (rainbow-csv): 3.12.0 Remove empty lines (remove-empty-lines): 1.0.1 TODO Highlight (vscode-todo-highlight): 1.0.5 Text Marker (Highlighter) (text-marker): 1.11.0 TypeScript and JavaScript Language Features (typescript-language-features): 1.0.0 Version Lens (vscode-versionlens): 1.14.2 classdiagram-ts (classdiagram-ts): 0.1.67 scratch-code (scratch-code): 0.1.8 undefined (indent-rainbow): 8.3.1 ```

Remote system |Setting|Value| |-|-| |IBM i OS|V7R5M0| |Tech Refresh|4| |CCSID Origin|37| |Runtime CCSID|37| |Default CCSID|37| |SQL|Enabled |Source dates|Enabled ### Enabled features |/QOpenSys/pkgs/bin|/usr/bin|/QSYS.LIB|/QIBM/ProdData/IBMiDebugService/bin| |-|-|-|-| |bash|attr|QZDFMDB2.PGM|startDebugService.sh| |find|iconv||| |git|setccsid||| |grep|||| |ls|||| |md5sum|||| |sort|||| |stat|||| |tar|||| |tn5250||||
Shell env
Variants ```json { "american": "#@$", "local": "#@$" } ```
Errors Copy attempts, 1 good 1 failed ``` Call QSYS2.QCMDEXC('CPYTOSTMF FROMMBR(''/IASP/QSYS.LIB/PRDSRC.LIB/QRPGSRC.FILE/@@ED0189.MBR'') TOSTMF(''/home/pgmr/tmp/code4itempO_GQGVaUI3zNM9YcnwbqX0/@@ed0189.mbr'') STMFOPT(*REPLACE) STMFCCSID(1208) DBFCCSID(*FILE) ENDLINFMT(*LF)'); Call QSYS2.QCMDEXC('CPYTOSTMF FROMMBR(''/IASP/QSYS.LIB/PRDSRC.LIB/QRPGSRC.FILE/\$\$CR714767.MBR'') TOSTMF(''/home/pgmr/tmp/code4itempO_GQGVaUI3zNM9YcnwbqX0/$$cr714767.sqlrpgle'') STMFOPT(*REPLACE) STMFCCSID(1208) DBFCCSID(*FILE) ENDLINFMT(*LF)'); ``` Errors reported ``` DB20000I THE SQL COMMAND COMPLETED SUCCESSFULLY. DB2> **** CLI ERROR ***** SQLSTATE: 38501 NATIVE ERROR CODE: -443 Object not copied. Object is /IASP/QSYS.LIB/PRDSRC.LIB/QRPGSRC.FILE/\\$\\$CR714767.MBR. DB2> ```
m-tyler commented 1 month ago

Issue only seems to occur with the dollar signs and only when more than one.

m-tyler commented 3 days ago

This an issue when opening archive source members from our CMS tool, Rocket Aldon.

/home/PGMT: /usr/bin/attr -p /WIASP/QSYS.LIB/PGMT.LIB/QDDSSRC.FILE/REFPRPPF.MBR CREATE_TIME MODIFY_TIME DATA_SIZE
/home/PGMT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
CREATE OR REPLACE ALIAS ILEDITOR.WFIARCHIVE_$$ARCSRC$$_A000096206 for "WFIARCHIVE"."$$ARCSRC$$"("A000096206")
/home/PGMT: /usr/bin/attr -p /WIASP/QSYS.LIB/WFIARCHIVE.LIB/\\\$\\\$ARCSRC\\\$\\\$.FILE/A000096206.MBR CREATE_TIME MODIFY_TIME DATA_SIZE
{
    "code": 0,
    "signal": null,
    "stdout": "DATA_SIZE=146124\nCREATE_TIME=Wed Nov  6 09:53:38 2024\nMODIFY_TIME=Fri Aug 23 13:50:14 2024",
    "stderr": ""
}

{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "attr: 001-2248 Error found getting attributes for file /WIASP/QSYS.LIB/WFIARCHIVE.LIB/\\$\\$ARCSRC\\$\\$.FILE/A000096206.MBR.  A path name is too long."
}
worksofliam commented 3 days ago

@m-tyler What happens if you run this from a pase shell? (zsh, bash, etc)

/usr/bin/attr -p /WIASP/QSYS.LIB/WFIARCHIVE.LIB/\\\$\\\$ARCSRC\\\$\\\$.FILE/A000096206.MBR CREATE_TIME MODIFY_TIME DATA_SIZE

Do you get the same error of A path name is too long?

m-tyler commented 3 days ago

Using the internal PASE, QSH, and QP2TERM all return the same error.

image

image

image

worksofliam commented 3 days ago

@m-tyler Fun! Looks like, maybe, there's too many escape characters. I will have to fiddle with this.

Any chance you can share the CRT* commands for that library, source file and member so I can create a test case?

m-tyler commented 3 days ago

I don't have the exact commands used as they are built into the CMS product. But I replicated the objects using these commands. I am not certain the IASP has any play on this error.

CRTSRCPF FILE(PGMTRST/$$ARCSRC$$) RCDLEN(120) TEXT('Codefori Issue #2264')
ADDPFM FILE(PGMTRST/$$ARCSRC$$) MBR(A000000001) TEXT('Codefori Issue #2264') SRCTYPE(PF)                 

image image