浏览代码

1-pass bookmark parsing

master
Arun Prakash Jana 5 年前
父节点
当前提交
575d8e0e66
找不到此签名对应的密钥 GPG 密钥 ID: A75979F35C080412
共有 1 个文件被更改,包括 20 次插入23 次删除
  1. +20
    -23
      src/nnn.c

+ 20
- 23
src/nnn.c 查看文件

@@ -1648,36 +1648,33 @@ static bool parsebmstr()
{
int i = 0;
char *bms = getenv(env_cfg[NNN_BMS]);
if (!bms)
char *nextkey = bms;
if (!bms | !*bms)
return TRUE;

while (*bms && i < BM_MAX) {
bookmark[i].key = *bms;

if (!*++bms) {
bookmark[i].key = '\0';
break;
}

if (*bms != ':')
return FALSE; /* We support single char keys only */

bookmark[i].loc = ++bms;
if (bookmark[i].loc[0] == '\0' || bookmark[i].loc[0] == ';') {
bookmark[i].key = '\0';
break;
if (bms == nextkey) {
bookmark[i].key = *bms;
if (*++bms != ':')
return FALSE;
if (*++bms == '\0')
return FALSE;
bookmark[i].loc = bms;
++i;
}

while (*bms && *bms != ';')
++bms;

if (*bms)
if (*bms == ';') {
*bms = '\0';
else
break;
nextkey = bms + 1;
}

++bms;
++i;
}

if (i < BM_MAX) {
if (*bookmark[i - 1].loc == '\0')
return FALSE;
bookmark[i].key = '\0';
}

return TRUE;
@@ -3903,7 +3900,7 @@ int main(int argc, char *argv[])

/* Parse bookmarks string */
if (!parsebmstr()) {
fprintf(stderr, "%s: 1 char per key\n", env_cfg[NNN_BMS]);
fprintf(stderr, "%s: malformed\n", env_cfg[NNN_BMS]);
return 1;
}



正在加载...
取消
保存