As a Note. Mentioned this on list a few times, but never go much response.
I've Used Pegasus since the old DOS version, and it had an option to rename folders.
Think the windows version dropped that option.
For myself I created a program that would handle the renaming to a degree automatically, but does require a couple manual steps.
It looks that folders, and tries to rename the ones with the FOL starting. By using the long name if less than 9 characters. Though I did find that names can actually be a little longer. Think it is 14 or 18? When name is to long or duplicate it prompts for a name. Alway recommend backing everything up first just to be sure.
Program looks like this. Not pretty, and text based.
folderzla.cpp is current version.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<unistd.h>
void cleanpmm(char filename[],char c[]);
void struprx( char *p );
int main(int argc, char *argv[])
{
FILE *fp1,*fp2,*fp3;
char xx[5]="",*eof,*p, input[200][200]={" "},tmp[200],*p1,file_in[15]="ZZZZZZ";
int i=0,j,n;
char a[50]="",b[50]="",c[50]="",c2[50]="",d[50]="",e[50]="",line[200]="",f[50],g[50],f2[20]="",g2[20]="",f3[50]="";
if(argc==2)
{
strcpy(file_in,argv[1]);
printf("%s %s\n",file_in,argv[1]);
sleep(10);
}
#ifdef __linux__
system("clear");
#else
system("cls");
#endif
printf("MAKE SURE YOU HAVE BACKED UP EVERYTHING BEFORE RUNNING THIS!\n");
printf("THIS SHOULD BE RUN FROM THE MAIL DIRECTORY\n");
printf("IT WILL RENAME FILES, AND WILL MAKE MODIFIED VERSION OF THE\n");
printf("HIERARCH.PM FILE AND UPDATES FOR THE STATE.PMJ FILE\n");
printf("YOU WILL NEED TO COPY HIERARCH.NEW TO HIERARCH.PM AFTER CHECKING\n");
printf("YOU WILL NEED TO COPY STATE.PMJ.NEW TO STATE.PMJ AFTER CHECKING\n");
printf("IT WILL ALSO REQUIRE UPDATING OF FILTER RULES TO THE NEW FOLDER NAMES\n\n");
printf("IF YOU ARE UNSURE OF ANY OF THIS, DO NOT PROCEED!\n");
printf("IF YOU ARE SURE ENTER YES IN ALL CAPS TO PROCEED\n");
scanf("%4s",xx);
if (strcmp(xx,"YES")!=0)
return(255);
else
{
fp1=fopen("HIERARCH.PM","r");
fp3=fopen("HIERARCH.NEW","w");
fgets(line,199,fp1);
fprintf(fp3,"%s",line);
do
{
eof=fgets(line,199,fp1);
if (eof!=NULL)
{
if(line[0]=='1' || line[0]=='2')
{
fprintf(fp3,"%s",line);
continue;
}
if((p=strstr(line,"Recent search")))
{
continue;
}
if((p=strstr(line,"Deleted Messages")))
{
fprintf(fp3,"%s",line);
continue;
}
sscanf(line,"%49[^,],%49[^,],%49[^,],%49[^,],%49[^\n] ",a,b,c,d,e);
strcat(e,"\x0a");
if(strchr(c,':')==NULL)
continue;
strcpy(f,strchr(c,':')+1);
if(strchr(f,':')==NULL)
continue;
strcpy(f3,strchr(f,':')+1);
strcpy(f,f3);
f[strlen(f)-1]='\0';
if ((p=strchr(f,'"'))) *p=0;
if((f[0]=='F' && f[1]=='O' && f[2]=='L') || strcmp(f,file_in)==0)
{
strcpy(g,&e[1]);
g[strlen(g)-2]='\0';
if ((p=strchr(g,'"'))) *p=0;
for(int ii=0;ii<(int)strlen(g);ii++)
if (isascii(g[ii])==0) strcat(g," ");
if (strlen(g)>8 || strchr(g,' ')!=NULL || strchr(g,'.')!=NULL)
{
printf("The folder name is too long\n\tor has a blank\n\tor has a period\n\tor has a high character\n%s\nEnter a name of 8 characters or less (no blanks, perionds or high characters)\n",g);
scanf("%49s",g);
}
struprx(f);
strcpy(f2,f);
strcat(f2,".PMM");
struprx(g);
strcpy(g2,g);
strcat(g2,".PMM");
printf("%s %s %s %s\n",f,f2,g,g2);
while(c[strlen(c)-1]!=':')
c[strlen(c)-1]='\0';
strcat(c,g);
c[strlen(c)+1]='\0';
c[strlen(c)]=34;
if (rename(f2, g2) == 0)
{
printf("Renamed %s to %s.\n", f2, g2);
cleanpmm(g2,c);
}
else
perror("rename");
strcpy(f2,f);
strcat(f2,".PMI");
strcpy(g2,g);
strcat(g2,".PMI");
if (rename(f2, g2) == 0)
printf("Renamed %s to %s.\n", f2, g2);
else
perror("rename");
}
for(int ii=0;ii<(int)strlen(c);ii++)
c[ii]=toupper(c[ii]);
fprintf(fp3,"%s,%s,%s,%s,%s",a,b,c,d,e);
strcpy(c2,&c[1]);
c2[strlen(c2)-1]='\0';
#ifdef __linux__
sprintf(input[i++],"%s 15,24,711,331,\"147,209,122,256,50,0\"\r\n",c2);
#else
sprintf(input[i++],"%s 15,24,711,331,\"147,209,122,256,50,0\"\n",c2);
#endif
}
}while (!feof(fp1));
}
fclose(fp1);
fclose(fp3);
n=i;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(strcmp(&input[i][14],&input[j][14])>0)
{
strcpy(tmp,input[i]);
strcpy(input[i],input[j]);
strcpy(input[j],tmp);
}
fp3=fopen("STATE.PMJ","r");
fp2=fopen("STATE.PMJ.NEW","w");
strcpy(line,"");
while((fgets(line,199,fp3)))
{
#ifdef __linux__
if(strcmp(line,"[FOLDER]\r\n")==0)
#else
if(strcmp(line,"[FOLDER]\n")==0)
#endif
{
fprintf(fp2,"%s",line);
fgets(line,199,fp3);
fprintf(fp2,"%s",line);
break;
}
else
fprintf(fp2,"%s",line);
}
for(i=0;i<n;i++)
{
p1=strchr(input[i],' ');
*p1='=';
fprintf(fp2,"%s",input[i]);
}
while((fgets(line,199,fp3)))
{
if(line[0]=='[') break;
}
do
{
fprintf(fp2,"%s",line);
fgets(line,199,fp3);
if(feof(fp3)) break;
} while(!feof(fp3));
fclose(fp2);
fclose(fp3);
i=0;
fp1=fopen("HIERARCH.NEW","r");
while((!feof(fp1)))
{
fgets(input[i++],99,fp1);
if((strstr(input[i-1],"Deleted Messages")))
{
input[i-1][0]=0;
i--;
}
}
fclose(fp1);
n=--i;
for(i=1;i<n;i++)
for(j=i;j<n;j++)
if(strcmp(&input[i][19],&input[j][19])>0)
{
strcpy(tmp,input[i]);
strcpy(input[i],input[j]);
strcpy(input[j],tmp);
}
fp2=fopen("HIERARCH.NEW","w");
for(i=0;i<n;i++)
{
fprintf(fp2,"%s",input[i]);
}
fclose(fp2);
remove("CACHE.PM");
return(0);
}
void cleanpmm(char filename[],char c[])
{
FILE *fp1;
if((fp1=fopen(filename,"rb+")))
{
int i;
char ch[128];
for(i=0;i<49;i++)
ch[i]=fgetc(fp1);
for(i=49;i<128;i++)
ch[i]=0;
for(i=86;i<(int)(86+strlen(c)-2);i++)
ch[i]=c[i-86+1];
fseek(fp1,0,0);
for(i=0;i<128;i++)
fputc(ch[i],fp1);
fclose(fp1);
}
}
void struprx( char *p )
{
while( *p )
{
*p=toupper( *p );
p++;
}
}
Contents of my HIERARCH.PM file.
2,1,"024B349:My mailbox","Michael Setzer II","Michael Setzer II"
0,0,"16D6FBC5:663A:ACCOUNT","024B349:My mailbox","Account"
0,0,"5A1ACD52:097A:AFT","024B349:My mailbox","AFT"
0,0,"778BEE16:656D:ALUMNI","024B349:My mailbox","Alumni"
0,0,"3BF8FBD0:663B:AMAZON","024B349:My mailbox","AMAZON"
0,0,"O0DY2II5:023F:AMZOLD","024B349:My mailbox","AMZOLD"
0,0,"1C84FBD0:663C:ANALOGX","024B349:My mailbox","Analogx"
1,0,"7FE82963:DADTRAY","024B349:My mailbox","DADTRAY"
1,0,"4DB14767:G4LTRAY","024B349:My mailbox","G4LTRAY"
0,0,"67D0FBDF:663F:BACKUP","024B349:My mailbox","Backup"
0,0,"64D8FB72:662F:BILL521","024B349:My mailbox","Bill521"
0,0,"1B9DFC75:6659:BLOODBANK","024B349:My mailbox","Blood Bank"
0,0,"0QB2VFK2:7BE5:BOYCOTT","024B349:My mailbox","Boycott"
0,0,"01D5FBEC:6641:BRAIN","024B349:My mailbox","Brain Share"
0,0,"AFML8EUK:0F8A:C","024B349:My mailbox","C"
0,0,"069EAFD6:5A1A:COLLECTZ","024B349:My mailbox","CollectZ"
0,0,"5OUTNTZZ:5CC5:COPY1314","08FE2816:COPYTRAY","Copy1314"
0,0,"UAPFMJM3:7A58:COPY2000","08FE2816:COPYTRAY","Copy2000"
0,0,"NP13X71Y:6176:COPY2001","08FE2816:COPYTRAY","Copy2001"
0,0,"4EP2LN9Z:6177:COPY2002","08FE2816:COPYTRAY","Copy2002"
0,0,"CE0LCQIN:6178:COPY2003","08FE2816:COPYTRAY","Copy2003"
0,0,"RJGEYE3R:6179:COPY2004","08FE2816:COPYTRAY","Copy2004"
0,0,"ZJRXOHCF:617A:COPY2005","08FE2816:COPYTRAY","Copy2005"
0,0,"SBFWUL0V:7536:COPY2006","08FE2816:COPYTRAY","Copy2006"
0,0,"IWHKVB32:6174:COPY2007","08FE2816:COPYTRAY","Copy2007"
0,0,"AY8RGEMX:6175:COPY2008","08FE2816:COPYTRAY","Copy2008"
0,0,"C7X7CSP5:23BE:COPY2009","08FE2816:COPYTRAY","Copy2009"
0,0,"QOOZDVTD:5599:COPY2010","08FE2816:COPYTRAY","Copy2010"
0,0,"0O3QIVY7:559A:COPY2011","08FE2816:COPYTRAY","Copy2011"
0,0,"YMOG8BN4:46D0:COPY2012","08FE2816:COPYTRAY","Copy2012"
0,0,"5MDK54HK:72D0:COPY2015","08FE2816:COPYTRAY","Copy2015"
0,0,"YXBMYZ2F:72D1:COPY2016","08FE2816:COPYTRAY","Copy2016"
0,0,"DACD8HA4:72D2:COPY2017","08FE2816:COPYTRAY","Copy2017"
0,0,"J39XXZ1C:72D3:COPY2018","08FE2816:COPYTRAY","Copy2018"
0,0,"2CMM31CS:2128:COPY2019","08FE2816:COPYTRAY","COPY2019"
0,0,"M82PYM4C:2129:COPY2020","08FE2816:COPYTRAY","COPY2020"
0,0,"2R25QWAB:212A:COPY2021","08FE2816:COPYTRAY","COPY2021"
0,0,"N1UYU4DT:212B:COPY2022","08FE2816:COPYTRAY","COPY2022"
0,0,"2BD83F9D:0DF4:COPYSELF","024B349:My mailbox","CopySelf",0,20
0,0,"48F3FCE3:666F:CUSTCARE","024B349:My mailbox","Customer Care"
0,0,"184DFC15:6648:DAD","024B349:My mailbox","Dad"
0,0,"6Z1ADN84:2DB3:DAD1","7FE82963:DADTRAY","DAD1"
0,0,"AAS2Q8AJ:2DB4:DAD2","7FE82963:DADTRAY","DAD2"
0,0,"583E7B7A:113F:DHARRIS","024B349:My mailbox","DHarris"
0,0,"705FFC25:664B:DISNEY","024B349:My mailbox","Disney"
0,0,"0757FB99:6637:DONNA_SU","024B349:My mailbox","Donna Summers"
0,0,"69C71ECB:7D08:EBAY","024B349:My mailbox","Ebay"
0,0,"1R7XUGGN:2C66:EBAYOLD","0F641206:EbayTray","EbayOld"
0,0,"9PD4GI7C:781A:EBAYOLD2","0F641206:EbayTray","EbayOld2"
0,0,"262EFB99:6638:ELAINE","024B349:My mailbox","Elaine"
0,0,"HJA1BB1D:556E:ELAINE1","12C82225:ElaineTray","Elaine1"
0,0,"UO9ISKVO:556F:ELAINE2","12C82225:ElaineTray","Elaine2"
0,0,"PR4BDCNE:5901:ELAINE3","12C82225:ElaineTray","Elaine3"
0,0,"0948B824:3D1B:FEDORA","024B349:My mailbox","Fedora"
0,0,"DIIIDMTU:0AFD:G4L","024B349:My mailbox","G4L"
0,0,"3KSSC1HB:6771:G4L0408","4DB14767:G4LTRAY","G4L0408"
0,0,"83DWN76M:7E6A:G4L0909","4DB14767:G4LTRAY","G4L0909"
0,0,"3KDTLD71:6772:G4L1011","4DB14767:G4LTRAY","G4L1011"
0,0,"7Z6IHUB1:6773:G4L1213","4DB14767:G4LTRAY","G4L1213"
0,0,"3H0Q9YJ9:042F:G4L1418","4DB14767:G4LTRAY","G4L1418"
0,0,"RZOHOY4Q:2A8B:G4L1920","4DB14767:G4LTRAY","G4L1920"
0,0,"3OOSMBJP:2E68:G4L2122","4DB14767:G4LTRAY","G4L2122"
0,0,"URAJ5V4B:59AE:G4L2324","4DB14767:G4LTRAY","G4l2324"
0,0,"LW7GN12F:31AE:G4U","024B349:My mailbox","G4U"
0,0,"1B807959:5B63:GFT","024B349:My mailbox","GFT"
0,0,"4060FD28:667D:GRC","024B349:My mailbox","GRC"
0,0,"O2WCFHFD:10C2:GRUB","024B349:My mailbox","Grub"
0,0,"BF64HBCK:35D9:HARLEY","024B349:My mailbox","Harley"
0,0,"2BA4FCC7:6668:HERC-XEN","024B349:My mailbox","Herc-Xena"
0,0,"15B7FCBB:6666:IBM","024B349:My mailbox","IBM"
0,0,"478E975C:16D1:JAY","024B349:My mailbox","Jay"
0,0,"00C0FD35:667E:JUNK","024B349:My mailbox","Junk or suspicious mail"
0,0,"C1UU809Q:5FC2:KERNEL","024B349:My mailbox","Kernel"
0,0,"25EDFD89:668C:KEVIN","024B349:My mailbox","Kevin"
0,0,"0D44FCF3:6670:KUENTOS","024B349:My mailbox","Kuentos"
0,0,"UDCKE6GE:7DD0:LIBRE","024B349:My mailbox","Libre Office"
0,0,"6FB3FD95:668F:LINUX","024B349:My mailbox","Linux"
0,0,"556CFDB1:6690:LYNDAE","024B349:My mailbox","LyndaE"
0,0,"0694FC35:664D:MAIN","024B349:My mailbox","Main Folder"
0,0,"DJHBYUKV:5478:MAIN2003","6FC54766:MAINTRAY","Main2003"
0,0,"DVM87FYO:5479:MAIN2004","6FC54766:MAINTRAY","Main2004"
0,0,"60TOHB32:4255:MAIN2005","6FC54766:MAINTRAY","Main2005"
0,0,"5Y00PGC7:5D6D:MAIN2006","6FC54766:MAINTRAY","Main2006"
0,0,"E5JG7AV3:5D6E:MAIN2007","6FC54766:MAINTRAY","Main2007"
0,0,"ZA2JSAID:3FA2:MAIN2008","6FC54766:MAINTRAY","Main2008"
0,0,"1AD6FCBB:6667:MERCURY","024B349:My mailbox","Mercury"
0,0,"12DDFE72:66AE:MOM","024B349:My mailbox","Mom"
0,0,"EC5HSZO9:1BBA:MOM-ORG","024B349:My mailbox","Mom-org"
0,0,"Z6A3JHPE:28AA:OPENCOB","024B349:My mailbox","Open Cobol"
0,0,"264FFDF7:669D:PM-NEWS","024B349:My mailbox","PM-News"
0,0,"019AFDF7:669C:PMAIL","024B349:My mailbox","Pegasus Mail List"
0,0,"E8OJWE5E:571D:PMAIL2020","76751789:PMAILTRAY","PMAIL2020"
0,0,"EM1LN1WP:571E:PMAIL2021","76751789:PMAILTRAY","PMAIL2021"
0,0,"T7N2J0AW:4D5B:PMAIL2022","76751789:PMAILTRAY","PMAIL2022"
0,0,"3VMJVXZ0:2079:PMAIL2023","76751789:PMAILTRAY","PMAIL2023"
1,0,"08FE2816:COPYTRAY","024B349:My mailbox","COPYTRAY"
1,0,"6FC54766:MAINTRAY","024B349:My mailbox","MAINTRAY"
1,0,"3C8A5551:USPSTRAY","024B349:My mailbox","USPSTRAY"
0,0,"2BB74576:0A72:REDHAT","024B349:My mailbox","RedHat"
0,0,"3TMH6SFS:19C1:SALIVE","024B349:My mailbox","Salive"
0,0,"3B8BA31E:0943:SPAM","024B349:My mailbox","Spam"
0,0,"IK1H7AZT:54C9:SPAMH","024B349:My mailbox","SpamH"
0,0,"2UE9GFDF:75EF:SQUID","024B349:My mailbox","Squid"
0,0,"BP4JRIND:32D5:SYSLINUX","024B349:My mailbox","Syslinux"
0,0,"0D5DFB57:1E25:TIGHTVNC","024B349:My mailbox","TightVnc"
0,0,"ECHSJGQS:3985:TISHAWNNA","024B349:My mailbox","Tishawnna"
1,0,"76751789:PMAILTRAY","024B349:My mailbox","PMAILTRAY"
0,0,"FDI909TU:4AC0:USPS","024B349:My mailbox","USPS"
0,0,"FUIF553Y:23DE:USPS2018","3C8A5551:USPSTRAY","USPS2018"
0,0,"8QM3VKXP:3337:USPS2019","3C8A5551:USPSTRAY","USPS2019"
0,0,"V3VV7J9V:3338:USPS2020","3C8A5551:USPSTRAY","USPS2020"
0,0,"MRHQQDQ7:3873:USPS2021","3C8A5551:USPSTRAY","USPS2021"
0,0,"X7FTDG6F:575E:USPS2022","3C8A5551:USPSTRAY","USPS2022"
0,0,"5721FE56:66A9:WATT","024B349:My mailbox","Watt"
0,0,"5C8F36E1:170C:WEBCAL","024B349:My mailbox","WebCal"
0,0,"ATCPJTA5:36A7:WGET2","024B349:My mailbox","wget2"
0,0,"25CC2EA6:27EF:ZHAOPEI","024B349:My mailbox","Zhaopei"
1,0,"12C82225:ElaineTray","024B349:My mailbox","ElaineTray"
1,0,"0F641206:EbayTray","024B349:My mailbox","EbayTray"
0,256,"JP2LTYA3:4DEC:FOL00AF0","024B349:My mailbox","Deleted Messages",0,20
0,0,"MG2ZS3H6:03EA:PMAIL2024","76751789:PMAILTRAY","PMAIL2024"
Sometimes, I short by last field, but have three trays I created since last time. Deleted Message folder shows up, but for me it is deleted on closing Pegasus, so is recreated each run.
I just like have folder names match.
Just renames PMM and PMI files, and makes modification in first 128 bytes of PMM files to match.
Don't know if this would stop dup folder names issues. Pegasus might only use the first two parts of folder names?
Note. I would require changing filtering rules, since folder names are changed.
Have compiled program to exe in linux, but using a native windows compiler might require some changes.
7707 Aug 23 2023 folderzla.cpp SOURCE
15272 Aug 23 2023 folderzla Linux Compiled
88064 Jul 3 07:16 folderzla.exe Windows Compile
Generally run after creating a new folder(s) then copy the files it creates to update.
I like doing it, but not a big deal.
Good Luck.
As a Note. Mentioned this on list a few times, but never go much response.
I've Used Pegasus since the old DOS version, and it had an option to rename folders.
Think the windows version dropped that option.
For myself I created a program that would handle the renaming to a degree automatically, but does require a couple manual steps.
It looks that folders, and tries to rename the ones with the FOL starting. By using the long name if less than 9 characters. Though I did find that names can actually be a little longer. Think it is 14 or 18? When name is to long or duplicate it prompts for a name. Alway recommend backing everything up first just to be sure.
Program looks like this. Not pretty, and text based.
folderzla.cpp is current version.
````
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<unistd.h>
void cleanpmm(char filename[],char c[]);
void struprx( char *p );
int main(int argc, char *argv[])
{
FILE *fp1,*fp2,*fp3;
char xx[5]="",*eof,*p, input[200][200]={" "},tmp[200],*p1,file_in[15]="ZZZZZZ";
int i=0,j,n;
char a[50]="",b[50]="",c[50]="",c2[50]="",d[50]="",e[50]="",line[200]="",f[50],g[50],f2[20]="",g2[20]="",f3[50]="";
if(argc==2)
{
strcpy(file_in,argv[1]);
printf("%s %s\n",file_in,argv[1]);
sleep(10);
}
#ifdef __linux__
system("clear");
#else
system("cls");
#endif
printf("MAKE SURE YOU HAVE BACKED UP EVERYTHING BEFORE RUNNING THIS!\n");
printf("THIS SHOULD BE RUN FROM THE MAIL DIRECTORY\n");
printf("IT WILL RENAME FILES, AND WILL MAKE MODIFIED VERSION OF THE\n");
printf("HIERARCH.PM FILE AND UPDATES FOR THE STATE.PMJ FILE\n");
printf("YOU WILL NEED TO COPY HIERARCH.NEW TO HIERARCH.PM AFTER CHECKING\n");
printf("YOU WILL NEED TO COPY STATE.PMJ.NEW TO STATE.PMJ AFTER CHECKING\n");
printf("IT WILL ALSO REQUIRE UPDATING OF FILTER RULES TO THE NEW FOLDER NAMES\n\n");
printf("IF YOU ARE UNSURE OF ANY OF THIS, DO NOT PROCEED!\n");
printf("IF YOU ARE SURE ENTER YES IN ALL CAPS TO PROCEED\n");
scanf("%4s",xx);
if (strcmp(xx,"YES")!=0)
return(255);
else
{
fp1=fopen("HIERARCH.PM","r");
fp3=fopen("HIERARCH.NEW","w");
fgets(line,199,fp1);
fprintf(fp3,"%s",line);
do
{
eof=fgets(line,199,fp1);
// printf("%s\n",line);
if (eof!=NULL)
{
if(line[0]=='1' || line[0]=='2')
{
fprintf(fp3,"%s",line);
continue;
}
if((p=strstr(line,"Recent search")))
{
// fprintf(fp3,"%s",line);
continue;
}
if((p=strstr(line,"Deleted Messages")))
{
fprintf(fp3,"%s",line);
continue;
}
sscanf(line,"%49[^,],%49[^,],%49[^,],%49[^,],%49[^\n] ",a,b,c,d,e);
strcat(e,"\x0a"); // NEED TO ADD LF for DOS FILE
// Search lines in file don't have :'s
if(strchr(c,':')==NULL)
continue;
strcpy(f,strchr(c,':')+1);
if(strchr(f,':')==NULL)
continue;
strcpy(f3,strchr(f,':')+1);
strcpy(f,f3);
f[strlen(f)-1]='\0';
// printf("%s\n",f);
if ((p=strchr(f,'"'))) *p=0;
// printf("[%s]\n",f);
if((f[0]=='F' && f[1]=='O' && f[2]=='L') || strcmp(f,file_in)==0)
{
strcpy(g,&e[1]);
g[strlen(g)-2]='\0';
// printf("%s\n",g);
if ((p=strchr(g,'"'))) *p=0;
for(int ii=0;ii<(int)strlen(g);ii++)
if (isascii(g[ii])==0) strcat(g," ");
if (strlen(g)>8 || strchr(g,' ')!=NULL || strchr(g,'.')!=NULL)
{
printf("The folder name is too long\n\tor has a blank\n\tor has a period\n\tor has a high character\n%s\nEnter a name of 8 characters or less (no blanks, perionds or high characters)\n",g);
scanf("%49s",g);
}
struprx(f);
strcpy(f2,f);
strcat(f2,".PMM");
struprx(g);
strcpy(g2,g);
strcat(g2,".PMM");
printf("%s %s %s %s\n",f,f2,g,g2);
while(c[strlen(c)-1]!=':')
c[strlen(c)-1]='\0';
strcat(c,g);
c[strlen(c)+1]='\0';
c[strlen(c)]=34;
if (rename(f2, g2) == 0)
{
printf("Renamed %s to %s.\n", f2, g2);
cleanpmm(g2,c);
}
else
perror("rename");
strcpy(f2,f);
strcat(f2,".PMI");
strcpy(g2,g);
strcat(g2,".PMI");
if (rename(f2, g2) == 0)
printf("Renamed %s to %s.\n", f2, g2);
else
perror("rename");
}
for(int ii=0;ii<(int)strlen(c);ii++) //Uppercase
c[ii]=toupper(c[ii]);
fprintf(fp3,"%s,%s,%s,%s,%s",a,b,c,d,e);
strcpy(c2,&c[1]);
c2[strlen(c2)-1]='\0';
#ifdef __linux__
sprintf(input[i++],"%s 15,24,711,331,\"147,209,122,256,50,0\"\r\n",c2);
#else
sprintf(input[i++],"%s 15,24,711,331,\"147,209,122,256,50,0\"\n",c2);
#endif
}
}while (!feof(fp1));
}
fclose(fp1);
fclose(fp3);
n=i;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(strcmp(&input[i][14],&input[j][14])>0)
{
strcpy(tmp,input[i]);
strcpy(input[i],input[j]);
strcpy(input[j],tmp);
}
fp3=fopen("STATE.PMJ","r");
fp2=fopen("STATE.PMJ.NEW","w");
strcpy(line,"");
while((fgets(line,199,fp3)))
{
#ifdef __linux__
if(strcmp(line,"[FOLDER]\r\n")==0)
#else
if(strcmp(line,"[FOLDER]\n")==0)
#endif
{
fprintf(fp2,"%s",line); // newmail
fgets(line,199,fp3);
fprintf(fp2,"%s",line);
break;
}
else
fprintf(fp2,"%s",line);
}
for(i=0;i<n;i++)
{
p1=strchr(input[i],' ');
*p1='=';
fprintf(fp2,"%s",input[i]);
}
while((fgets(line,199,fp3)))
{
if(line[0]=='[') break;
}
do
{
fprintf(fp2,"%s",line);
fgets(line,199,fp3);
if(feof(fp3)) break;
} while(!feof(fp3));
fclose(fp2);
fclose(fp3);
i=0;
fp1=fopen("HIERARCH.NEW","r");
while((!feof(fp1)))
{
fgets(input[i++],99,fp1);
// if((p1=strstr(input[i-1],"Deleted Messages")))
if((strstr(input[i-1],"Deleted Messages")))
{
// printf("%s",input[i-1]);
input[i-1][0]=0;
i--; // Ignore Deleted Messages Folder
}
}
fclose(fp1);
n=--i;
for(i=1;i<n;i++) // Don't sort first line
for(j=i;j<n;j++)
if(strcmp(&input[i][19],&input[j][19])>0)
{
strcpy(tmp,input[i]);
strcpy(input[i],input[j]);
strcpy(input[j],tmp);
}
fp2=fopen("HIERARCH.NEW","w");
for(i=0;i<n;i++)
{
// printf("%d %s",i,input[i]);
fprintf(fp2,"%s",input[i]);
}
fclose(fp2);
remove("CACHE.PM");
return(0);
}
void cleanpmm(char filename[],char c[])
{
FILE *fp1;
if((fp1=fopen(filename,"rb+")))
{
int i;
char ch[128];
for(i=0;i<49;i++)
ch[i]=fgetc(fp1);
for(i=49;i<128;i++)
ch[i]=0;
for(i=86;i<(int)(86+strlen(c)-2);i++)
ch[i]=c[i-86+1];
fseek(fp1,0,0);
for(i=0;i<128;i++)
fputc(ch[i],fp1);
fclose(fp1);
}
}
void struprx( char *p )
{
while( *p )
{
*p=toupper( *p );
p++;
}
}
````
Contents of my HIERARCH.PM file.
````
2,1,"024B349:My mailbox","Michael Setzer II","Michael Setzer II"
0,0,"16D6FBC5:663A:ACCOUNT","024B349:My mailbox","Account"
0,0,"5A1ACD52:097A:AFT","024B349:My mailbox","AFT"
0,0,"778BEE16:656D:ALUMNI","024B349:My mailbox","Alumni"
0,0,"3BF8FBD0:663B:AMAZON","024B349:My mailbox","AMAZON"
0,0,"O0DY2II5:023F:AMZOLD","024B349:My mailbox","AMZOLD"
0,0,"1C84FBD0:663C:ANALOGX","024B349:My mailbox","Analogx"
1,0,"7FE82963:DADTRAY","024B349:My mailbox","DADTRAY"
1,0,"4DB14767:G4LTRAY","024B349:My mailbox","G4LTRAY"
0,0,"67D0FBDF:663F:BACKUP","024B349:My mailbox","Backup"
0,0,"64D8FB72:662F:BILL521","024B349:My mailbox","Bill521"
0,0,"1B9DFC75:6659:BLOODBANK","024B349:My mailbox","Blood Bank"
0,0,"0QB2VFK2:7BE5:BOYCOTT","024B349:My mailbox","Boycott"
0,0,"01D5FBEC:6641:BRAIN","024B349:My mailbox","Brain Share"
0,0,"AFML8EUK:0F8A:C","024B349:My mailbox","C"
0,0,"069EAFD6:5A1A:COLLECTZ","024B349:My mailbox","CollectZ"
0,0,"5OUTNTZZ:5CC5:COPY1314","08FE2816:COPYTRAY","Copy1314"
0,0,"UAPFMJM3:7A58:COPY2000","08FE2816:COPYTRAY","Copy2000"
0,0,"NP13X71Y:6176:COPY2001","08FE2816:COPYTRAY","Copy2001"
0,0,"4EP2LN9Z:6177:COPY2002","08FE2816:COPYTRAY","Copy2002"
0,0,"CE0LCQIN:6178:COPY2003","08FE2816:COPYTRAY","Copy2003"
0,0,"RJGEYE3R:6179:COPY2004","08FE2816:COPYTRAY","Copy2004"
0,0,"ZJRXOHCF:617A:COPY2005","08FE2816:COPYTRAY","Copy2005"
0,0,"SBFWUL0V:7536:COPY2006","08FE2816:COPYTRAY","Copy2006"
0,0,"IWHKVB32:6174:COPY2007","08FE2816:COPYTRAY","Copy2007"
0,0,"AY8RGEMX:6175:COPY2008","08FE2816:COPYTRAY","Copy2008"
0,0,"C7X7CSP5:23BE:COPY2009","08FE2816:COPYTRAY","Copy2009"
0,0,"QOOZDVTD:5599:COPY2010","08FE2816:COPYTRAY","Copy2010"
0,0,"0O3QIVY7:559A:COPY2011","08FE2816:COPYTRAY","Copy2011"
0,0,"YMOG8BN4:46D0:COPY2012","08FE2816:COPYTRAY","Copy2012"
0,0,"5MDK54HK:72D0:COPY2015","08FE2816:COPYTRAY","Copy2015"
0,0,"YXBMYZ2F:72D1:COPY2016","08FE2816:COPYTRAY","Copy2016"
0,0,"DACD8HA4:72D2:COPY2017","08FE2816:COPYTRAY","Copy2017"
0,0,"J39XXZ1C:72D3:COPY2018","08FE2816:COPYTRAY","Copy2018"
0,0,"2CMM31CS:2128:COPY2019","08FE2816:COPYTRAY","COPY2019"
0,0,"M82PYM4C:2129:COPY2020","08FE2816:COPYTRAY","COPY2020"
0,0,"2R25QWAB:212A:COPY2021","08FE2816:COPYTRAY","COPY2021"
0,0,"N1UYU4DT:212B:COPY2022","08FE2816:COPYTRAY","COPY2022"
0,0,"2BD83F9D:0DF4:COPYSELF","024B349:My mailbox","CopySelf",0,20
0,0,"48F3FCE3:666F:CUSTCARE","024B349:My mailbox","Customer Care"
0,0,"184DFC15:6648:DAD","024B349:My mailbox","Dad"
0,0,"6Z1ADN84:2DB3:DAD1","7FE82963:DADTRAY","DAD1"
0,0,"AAS2Q8AJ:2DB4:DAD2","7FE82963:DADTRAY","DAD2"
0,0,"583E7B7A:113F:DHARRIS","024B349:My mailbox","DHarris"
0,0,"705FFC25:664B:DISNEY","024B349:My mailbox","Disney"
0,0,"0757FB99:6637:DONNA_SU","024B349:My mailbox","Donna Summers"
0,0,"69C71ECB:7D08:EBAY","024B349:My mailbox","Ebay"
0,0,"1R7XUGGN:2C66:EBAYOLD","0F641206:EbayTray","EbayOld"
0,0,"9PD4GI7C:781A:EBAYOLD2","0F641206:EbayTray","EbayOld2"
0,0,"262EFB99:6638:ELAINE","024B349:My mailbox","Elaine"
0,0,"HJA1BB1D:556E:ELAINE1","12C82225:ElaineTray","Elaine1"
0,0,"UO9ISKVO:556F:ELAINE2","12C82225:ElaineTray","Elaine2"
0,0,"PR4BDCNE:5901:ELAINE3","12C82225:ElaineTray","Elaine3"
0,0,"0948B824:3D1B:FEDORA","024B349:My mailbox","Fedora"
0,0,"DIIIDMTU:0AFD:G4L","024B349:My mailbox","G4L"
0,0,"3KSSC1HB:6771:G4L0408","4DB14767:G4LTRAY","G4L0408"
0,0,"83DWN76M:7E6A:G4L0909","4DB14767:G4LTRAY","G4L0909"
0,0,"3KDTLD71:6772:G4L1011","4DB14767:G4LTRAY","G4L1011"
0,0,"7Z6IHUB1:6773:G4L1213","4DB14767:G4LTRAY","G4L1213"
0,0,"3H0Q9YJ9:042F:G4L1418","4DB14767:G4LTRAY","G4L1418"
0,0,"RZOHOY4Q:2A8B:G4L1920","4DB14767:G4LTRAY","G4L1920"
0,0,"3OOSMBJP:2E68:G4L2122","4DB14767:G4LTRAY","G4L2122"
0,0,"URAJ5V4B:59AE:G4L2324","4DB14767:G4LTRAY","G4l2324"
0,0,"LW7GN12F:31AE:G4U","024B349:My mailbox","G4U"
0,0,"1B807959:5B63:GFT","024B349:My mailbox","GFT"
0,0,"4060FD28:667D:GRC","024B349:My mailbox","GRC"
0,0,"O2WCFHFD:10C2:GRUB","024B349:My mailbox","Grub"
0,0,"BF64HBCK:35D9:HARLEY","024B349:My mailbox","Harley"
0,0,"2BA4FCC7:6668:HERC-XEN","024B349:My mailbox","Herc-Xena"
0,0,"15B7FCBB:6666:IBM","024B349:My mailbox","IBM"
0,0,"478E975C:16D1:JAY","024B349:My mailbox","Jay"
0,0,"00C0FD35:667E:JUNK","024B349:My mailbox","Junk or suspicious mail"
0,0,"C1UU809Q:5FC2:KERNEL","024B349:My mailbox","Kernel"
0,0,"25EDFD89:668C:KEVIN","024B349:My mailbox","Kevin"
0,0,"0D44FCF3:6670:KUENTOS","024B349:My mailbox","Kuentos"
0,0,"UDCKE6GE:7DD0:LIBRE","024B349:My mailbox","Libre Office"
0,0,"6FB3FD95:668F:LINUX","024B349:My mailbox","Linux"
0,0,"556CFDB1:6690:LYNDAE","024B349:My mailbox","LyndaE"
0,0,"0694FC35:664D:MAIN","024B349:My mailbox","Main Folder"
0,0,"DJHBYUKV:5478:MAIN2003","6FC54766:MAINTRAY","Main2003"
0,0,"DVM87FYO:5479:MAIN2004","6FC54766:MAINTRAY","Main2004"
0,0,"60TOHB32:4255:MAIN2005","6FC54766:MAINTRAY","Main2005"
0,0,"5Y00PGC7:5D6D:MAIN2006","6FC54766:MAINTRAY","Main2006"
0,0,"E5JG7AV3:5D6E:MAIN2007","6FC54766:MAINTRAY","Main2007"
0,0,"ZA2JSAID:3FA2:MAIN2008","6FC54766:MAINTRAY","Main2008"
0,0,"1AD6FCBB:6667:MERCURY","024B349:My mailbox","Mercury"
0,0,"12DDFE72:66AE:MOM","024B349:My mailbox","Mom"
0,0,"EC5HSZO9:1BBA:MOM-ORG","024B349:My mailbox","Mom-org"
0,0,"Z6A3JHPE:28AA:OPENCOB","024B349:My mailbox","Open Cobol"
0,0,"264FFDF7:669D:PM-NEWS","024B349:My mailbox","PM-News"
0,0,"019AFDF7:669C:PMAIL","024B349:My mailbox","Pegasus Mail List"
0,0,"E8OJWE5E:571D:PMAIL2020","76751789:PMAILTRAY","PMAIL2020"
0,0,"EM1LN1WP:571E:PMAIL2021","76751789:PMAILTRAY","PMAIL2021"
0,0,"T7N2J0AW:4D5B:PMAIL2022","76751789:PMAILTRAY","PMAIL2022"
0,0,"3VMJVXZ0:2079:PMAIL2023","76751789:PMAILTRAY","PMAIL2023"
1,0,"08FE2816:COPYTRAY","024B349:My mailbox","COPYTRAY"
1,0,"6FC54766:MAINTRAY","024B349:My mailbox","MAINTRAY"
1,0,"3C8A5551:USPSTRAY","024B349:My mailbox","USPSTRAY"
0,0,"2BB74576:0A72:REDHAT","024B349:My mailbox","RedHat"
0,0,"3TMH6SFS:19C1:SALIVE","024B349:My mailbox","Salive"
0,0,"3B8BA31E:0943:SPAM","024B349:My mailbox","Spam"
0,0,"IK1H7AZT:54C9:SPAMH","024B349:My mailbox","SpamH"
0,0,"2UE9GFDF:75EF:SQUID","024B349:My mailbox","Squid"
0,0,"BP4JRIND:32D5:SYSLINUX","024B349:My mailbox","Syslinux"
0,0,"0D5DFB57:1E25:TIGHTVNC","024B349:My mailbox","TightVnc"
0,0,"ECHSJGQS:3985:TISHAWNNA","024B349:My mailbox","Tishawnna"
1,0,"76751789:PMAILTRAY","024B349:My mailbox","PMAILTRAY"
0,0,"FDI909TU:4AC0:USPS","024B349:My mailbox","USPS"
0,0,"FUIF553Y:23DE:USPS2018","3C8A5551:USPSTRAY","USPS2018"
0,0,"8QM3VKXP:3337:USPS2019","3C8A5551:USPSTRAY","USPS2019"
0,0,"V3VV7J9V:3338:USPS2020","3C8A5551:USPSTRAY","USPS2020"
0,0,"MRHQQDQ7:3873:USPS2021","3C8A5551:USPSTRAY","USPS2021"
0,0,"X7FTDG6F:575E:USPS2022","3C8A5551:USPSTRAY","USPS2022"
0,0,"5721FE56:66A9:WATT","024B349:My mailbox","Watt"
0,0,"5C8F36E1:170C:WEBCAL","024B349:My mailbox","WebCal"
0,0,"ATCPJTA5:36A7:WGET2","024B349:My mailbox","wget2"
0,0,"25CC2EA6:27EF:ZHAOPEI","024B349:My mailbox","Zhaopei"
1,0,"12C82225:ElaineTray","024B349:My mailbox","ElaineTray"
1,0,"0F641206:EbayTray","024B349:My mailbox","EbayTray"
0,256,"JP2LTYA3:4DEC:FOL00AF0","024B349:My mailbox","Deleted Messages",0,20
0,0,"MG2ZS3H6:03EA:PMAIL2024","76751789:PMAILTRAY","PMAIL2024"
````
Sometimes, I short by last field, but have three trays I created since last time. Deleted Message folder shows up, but for me it is deleted on closing Pegasus, so is recreated each run.
I just like have folder names match.
Just renames PMM and PMI files, and makes modification in first 128 bytes of PMM files to match.
Don't know if this would stop dup folder names issues. Pegasus might only use the first two parts of folder names?
Note. I would require changing filtering rules, since folder names are changed.
Have compiled program to exe in linux, but using a native windows compiler might require some changes.
7707 Aug 23 2023 folderzla.cpp SOURCE
15272 Aug 23 2023 folderzla Linux Compiled
88064 Jul 3 07:16 folderzla.exe Windows Compile
Generally run after creating a new folder(s) then copy the files it creates to update.
I like doing it, but not a big deal.
Good Luck.